यह जानने का एक तरीका है कि किस वर्ग के पास कोई फ़ंक्शन है? उदाहरण:जावास्क्रिप्ट - किसी फ़ंक्शन (विधि) के क्लास मालिक को प्राप्त करें
function globalFunc(){
//alert MyObject
}
function MyObject(){
}
MyObject.prototype.test=function(){
globalFunc();
}
var o=new MyObject();
o.test(); //alert MyObject
अब इस समाधान का उपयोग कर im:
function globalFunc(){
alert(globalFunc.caller.__class__);
}
function MyObject(){
}
MyObject.prototype.test=function(){
globalFunc();
}
MyObject.prototype.test.__class__=MyObject;
var o=new MyObject();
o.test(); //alert MyObject
लेकिन वहाँ एक बड़ी समस्या है, यह देखने के लिए:
function globalFunc(){
alert(globalFunc.caller.__class__);
}
function MyObject(){
}
MyObject.prototype.test=function(){
var temp=function(){
globalFunc();
}
temp();
/* to simulate a simple closure, this may be for example:
element.addEventListener("click",temp,false);
*/
}
MyObject.prototype.test.__class__=MyObject;
var o=new MyObject();
o.test(); //alert undefined
तो, वहाँ इस प्राप्त करने के लिए एक स्पष्ट तरीका है ? मुझे पता है कि समस्या कहां है (वर्ग संपत्ति केवल परीक्षण की संपत्ति है और अस्थायी नहीं है), लेकिन मैं कक्षा भी temp में नहीं जोड़ सकता।
धन्यवाद।
उत्तर के लिए धन्यवाद, कुछ स्पष्टीकरण।
मैं निजी सदस्यों के साथ उन्मुख व्यक्तिगत फ्रैमवर्क ओओ करने की कोशिश कर रहा हूं।
तो:
globalFunc, एक विशेष समारोह है im इसे प्रयोग "निजी" संपत्ति प्राप्त करने के लिए और मैं कॉल विधि के साथ यह फोन नहीं कर सकते हैं या कुछ तर्क गुजर, केवल तर्क im पास होना जरूरी है "इस":
उदाहरण के लिए, $() वैश्विक
Class({
public:{
MyClass:function(){
},
setName:function(name) {
$(this).name=name; //set the private var name
},
getName:function(){
return $(this).name;
}
},
private:{
name:"UNKNOWN"
}
})
var o=new MyClass();
o.getName(); // UNKNOWN
o.setName("TEST!!!");
o.getName(); // TEST!!!
o.name; //undefined
$(o).name; //undefined
विरासत के साथ काम करता है करने के लिए है, $(), मैं पता है कि वर्ग यह और वर्ग की वस्तु फोन की जरूरत है।
सभी अच्छे काम करता है, लेकिन मैं clouser को __class__ संपत्ति को जोड़ना होगा अगर मैं एक clousure में एक निजी सदस्यों का उपयोग करने की जरूरत है !! और मुझे यह नहीं चाहिए!
फिर से धन्यवाद और मेरी बुरी अंग्रेजी के लिए खेद है, मैं देशी वक्ता नहीं हूं।
आपको इस विचार को अनदेखा करना होगा कि जावास्क्रिप्ट में "कक्षा" जैसी कोई चीज़ है। नहीं है –