स्पष्ट रूप से समझ this
कथन के बारे में है, तो आप को समझना चाहिए कि यह वर्तमान समारोह के अंदर "गुंजाइश" का प्रतिनिधित्व करने के लिए।
आप जब घोषित:
function Test() {
this.clientData = {
....
};
}
this
Test
समारोह के वर्तमान क्षेत्र का प्रतिनिधित्व करता है। यही कारण है कि, जब आप var test = new Test();
करेंगे, तो आप test.clientData
का उपयोग करने में सक्षम होंगे और फिर अपने ऑब्जेक्ट के प्रारंभ में सेट किए गए डेटा तक पहुंच प्राप्त कर सकेंगे।
अब, अपने test
वस्तु की अपनी clientData
संपत्ति के अंदर, आपके पास एक setUserName
(मेरा सुझाव है कि आप इसे setFullName
नाम हैं) जो फिर एक समारोह (JavaScript is function scoped)। तो अगर हम अपने कोड को देखो:
function Test() {
this.clientData = {
fullName: "Not Set",
setFullName: function(firstName, lastName) {
/*
* `this` represents the scope of the `setFullName` function,
* and not the scope of the `Test` function
*/
this.fullName = firstName + " " + lastName;
}
};
}
तो चाल शीर्ष स्तर में एक चर में this
स्टोर करने के लिए, क्योंकि जावास्क्रिप्ट समारोह scoped है, चर गुंजाइश के अंदर हर कार्य के लिए उपलब्ध हो जाएगा। तो अब हम यह कर सकते हैं:
function Test() {
var self = this;
self.clientData = {
fullName: "Not Set",
setFullName: function(firstName, lastName) {
self.clientData.fullName = firstName + " " + lastName;
}
};
}
मैं आपको अपने डेटा और अपनी विधि को अलग तरीके से विभाजित करने की सलाह देता हूं। अब आप सब कुछ clientData
ऑब्जेक्ट में डालते हैं जो आपके ऐप में कुछ जटिलता जोड़ता है। आप संग्रहीत मूल्यों (नाम, आयु, किसी भी भंडारण जानकारी) और डेटा के साथ बातचीत करने वाली विधियों को अलग कर सकते हैं।
मैं ऐसा ही कुछ सुझाव देते हैं:
function Person() {
var self = this;
self.fullName = "Not Set"
self.setFullName = function(firstName, lastName) {
self.fullName = firstName + " " + lastName;
};
}
var john = new Person();
john.setFullName("John", "Doe");
console.log("john.fullName : " + john.fullName); // Display : John Doe
var bruce = new Person()
bruce.setFullName("Bruce", "Wayne");
console.log("bruce.fullName : " + bruce.fullName); // Display : Bruce Wayne
इस तरह से आप को पढ़ने के लिए एक बहुत आसान कोड और निष्पादित करने के लिए एक बहुत आसान कोड है। इसके बाद, आप जिस ऑब्जेक्ट को चाहते हैं, उसे अपने ऑब्जेक्ट तर्क को व्यवस्थित और डिज़ाइन करने के लिए आप पर निर्भर है।
उम्मीद है कि यह मदद करता है।
शायद कॉलबैक फ़ंक्शन * [http://stackoverflow.com/questions/14561723/this-in-callback-functions) में [* 'this' का डुप्लिकेट)।इसके अलावा आप पढ़ना चाहेंगे [* यह "कीवर्ड" कैसे काम करता है? *] (Http://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work/3127440#3127440) और [ * एमडीएन: यह *] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this)। – RobG