ऐसा लगता है कि आप एक सेमी-कोलन याद कर रहे हैं:
function Foo() {
}
Foo.prototype.alert = function() {
alert(this);
}; //Semi-colon here!
(new Foo()).alert();
यहाँ एक fiddle जिसमें यह आपकी अपेक्षा के अनुसार काम करने के लिए प्रकट होता है है।
क्या वास्तव में हो रहा है कि alert
विधि तुरंत बुलाया जाता है, Foo
यह में पारित कर दिया का एक नया उदाहरण के साथ है, और alert
तो वापसी मान पर कहा जाता है (जो undefined
है):
Foo.prototype.alert = function() {
alert(this);
}(new Foo()).alert();
के रूप में @Nemoy ने उल्लेख किया है, यदि आप केवल new Foo().alert()
का उपयोग करते हैं तो आपको अपेक्षित व्यवहार मिलेगा क्योंकि स्वचालित अर्ध-कॉलन सम्मिलन आपके लिए सही स्थान पर अर्ध-कॉलन डाल देगा (अर्द्ध-कोलन की कमी का अर्थ नहीं बदलता है कोड)। और new
ऑपरेटर की सर्वोच्च प्राथमिकता है, इसलिए कोष्ठक की आवश्यकता नहीं है।
स्रोत
2012-03-20 06:58:59
जेएसफ़ील्ड डेमो। लगता है कि दूसरा 'अलर्ट' निष्पादित नहीं होता है: http://jsfiddle.net/sf3M3/ –