में इसे क्रोम बग या सफारी/फ़ायरफ़ॉक्स उदारता माना जाएगा?एक बंद नाम इसके अंदर एक ही नाम के फ़ंक्शन के साथ संघर्ष करता है, लेकिन केवल क्रोम
जब मैं एक बंद समारोह बनाता हूं, तो मैं इसे एक मनमाना नाम देता हूं, "बटन"। बंद होने के भीतर, मेरे पास एक ऐसा कार्य है जो बंद करने के मुख्य उद्देश्य के लिए एक निर्माता है, जिसे "बटन" भी कहा जाता है।
बंद करने का बटन बटन का संदर्भ देता है, संभवतः आंतरिक फ़ंक्शन बटन()।
var closure = (function Button(){
//the closure's primary object
function Button(target) {
//constructor for our button object
}
Button.prototype = e.inherit(e.Plugin.prototype);
Button.prototype.constructor = Button;
return {
Button: Button,
};
}());
//now let's call our closure to create a new Button
var newButton = new closure.Button()
सफारी और फ़ायरफ़ॉक्स में, यह कोई समस्या नहीं है। नए बंद करने को बुलाओ। बटन() आंतरिक बटन() का एक उदाहरण देता है। क्रोम में, हालांकि, जब एक आंतरिक फ़ंक्शन नाम बंद फ़ंक्शन नाम से मेल खाता है, तो कन्स्ट्रक्टर को कॉल नहीं किया जाता है। जो लौटाया जाता है वह बंद कार्य ही होता है। यह निश्चित रूप से त्रुटियों की ओर जाता है जब आंतरिक फ़ंक्शन उन विधियों को परिभाषित करता है जिन्हें मैं बाद में कोशिश करता हूं और कॉल करता हूं।
मैं दो कारणों से इस प्रश्न पोस्ट कर रहा हूँ:
1) यह मुझे एक दिन से अधिक ले लिया (में समस्या है, जो क्रोम रिपोर्टिंग कर रहा था कि मेरे बटन विधि .activate नहीं है के कारणों का पता करने के लिए मेरा असली कोड, बटन एक मूल वस्तु से प्राप्त होता है जो एक .activate() विधि प्रदान करता है)। यदि कोई और इस मुद्दे में चलता है, तो वे यहां मेरा प्रश्न पा सकते हैं और खुद को कुछ समय बचा सकते हैं।
2) मुझे आश्चर्य है: अगर यह मेरे हिस्से में एक त्रुटि है, तो बंद करने के भीतर बंद करने और एक समारोह दोनों के लिए समान नाम का उपयोग करने के लिए, यह सफारी/फ़ायरफ़ॉक्स में क्यों काम कर रहा है? अधिक विशेष रूप से, क्या क्रोम वास्तव में किसी भी तरह बंद होने की वापसी कर रहा है, न कि इच्छित आंतरिक कार्य? क्या यह एक बग है?
क्रोम में कोई रेपो नहीं: http://jsfiddle.net/77LZh/ –
मैंने आईई में नामित फ़ंक्शन एक्सप्रेशन के साथ समस्याओं के बारे में सुना है (देखें [यहां] (http://kangax.github.com/nfe/)), लेकिन क्रोम नहीं। और वास्तव में @ सेनकिंसे का परीक्षण क्रोम में ठीक काम करता प्रतीत होता है। आपको क्या लगता है कि निर्माता को बुलाया नहीं जा रहा है? – bfavaretto