2011-02-14 11 views

उत्तर

3

पैरामीटर एक अलग नाम दें का प्रयास करें:

function Foo() { 
     var myPrivateBool = false, 
      myOtherVar; 
     this.bar = function(param) { 
      myPrivateBool = true; 
      myOtherVar = param; 
     }; 
     this.baz = function() { 
      alert(myOtherVar); 
     }; 
    } 


var inst = new Foo; 

inst.bar("new value"); 

inst.baz(); // alerts the value of the variable "myOtherVar" 

http://jsfiddle.net/efqVW/


या यदि आप चाहें मान सेट करने के लिए एक निजी समारोह पैदा करते हैं।

function Foo() { 
    var myPrivateBool = false, 
     myOtherVar; 
    function setMyOtherVar(v) { 
     myOtherVar = v; 
    } 
    this.bar = function(myOtherVar) { 
     myPrivateBool = true; 
     setMyOtherVar(myOtherVar); 
    }; 
    this.baz = function() { 
     alert(myOtherVar); 
    }; 
} 


var inst = new Foo; 

inst.bar("new value"); 

inst.baz(); 

http://jsfiddle.net/efqVW/1/

+1

मुझे डर था कि यह होना होगा = (मुझे लगता है कि यह जेएस – Garrett

+0

@ गारेट की एक दोष है: हाँ, 'बार' फ़ंक्शन में औपचारिक पैरामीटर कन्स्ट्रक्टर के चर के मुकाबले स्कोप चेन में करीब होंगे। – user113716

+0

@ गेटेट : मुझे लगता है कि आप मूल्य निर्धारित करने के लिए एक निजी फ़ंक्शन बना सकते हैं, लेकिन मुझे यकीन नहीं है कि आप यही चाहते हैं। – user113716

-2

this.myOtherVar = myOtherVar;

+3

कि एक संपत्ति सेट करता है, एक चर नहीं। – user113716

+1

क्या यह इसे सार्वजनिक सदस्य नहीं बनाता है? – Garrett

-1

मुझे लगता है कि this.myOthervar = myOtherVar;

+0

ओपी एक निर्माता के रूप में 'फू' का उपयोग कर रहा है, इसलिए जब निर्माता को (कन्स्ट्रक्टर के रूप में) कहा जाता है, तो यह 'बनाई गई नई वस्तु का संदर्भ देगा। – user113716

-2

शायद तुम MyOtherVar रूप myOtherVar घोषणा कर सकते हैं भ्रष्ट ग्लोबल नेम स्पेस होगा और खिड़की वस्तु में एक चर window.myOtherVar बनाया जाता था जावास्क्रिप्ट के मामले संवेदनशीलता का लाभ उठाना चाहते हैं तो समारोह में आवंटित MyOtherVar = myOtherVar:

function Foo() { 
    var MyPrivateBool = false, 
     MyOtherVar; 
    this.bar = function(myOtherVar) { 
     MyPrivateBool = true; 
     MyOtherVar = myOtherVar; 
    }; 
} 
+0

यह एक बुरा अभ्यास है क्योंकि कैपिटल केस नाम प्रति सम्मेलन कक्षाओं के लिए हैं, उदाहरण के लिए: वस्तु, तिथि, गणित, व्यक्ति, वाहन इत्यादि। – igor