पहले अंकन चर fooModel
में वस्तु दूसरा अंकन fooModel
निर्माता के रूप में अज्ञात समारोह के कॉल के साथ बनाई गई वस्तु में निर्माता कॉल के बिना बनाया जाता है, है, तो new
कीवर्ड कन्स्ट्रक्टर फ़ंक्शन का उपयोग करते समय कहा जाता है और ऑब्जेक्ट इसके प्रोटोटाइप से बनाया जाता है (इस उदाहरण में कोई प्रोटोटाइप घोषित नहीं किया जाता है, इसलिए यह मानक ऑब्जेक्ट प्रोटोटाइप है)।
निष्कर्ष
उपयोग दूसरे अंकन यदि आपका वस्तु कुछ कोड जब बनाई गई है कॉल करने के लिए है, पहले नहीं तो का उपयोग करें।
दूसरा अंकन के बारे में अधिक
दूसरा टिप्पणी को स्थानीय (निजी) चर और निर्माता के अंदर कार्यों का उपयोग कर, क्योंकि निर्माता हमें खुद गुंजाइश देने में सक्षम बनाता है। निर्माता और new
साथ
var obj=new function(){
var priv="Local scope variable";
var method=function(){
console.log("Local method");
};
this.doStuff=function(){
//here local methods and variables can be used
};
};
दूसरा अंकन अधिक बार मानक निर्माता समारोह घोषणा और प्रोटोटाइप घोषणा के साथ प्रयोग किया जाता है। यदि हमें एक वस्तु को और अधिक बनाने की आवश्यकता है तो यह सही तरीका है। प्रोटोटाइप में नहीं बल्कि कन्स्ट्रक्टर में विधियों और प्रत्येक साझा गुणों को घोषित किया जाना चाहिए।
var ExampleClass=function(bar){
//constructor
this.bar = bar;
};
ExampleClass.prototype.doStuff=function(){
};
बनाना ऐसी वस्तु:
var a=new ExampleClass("A bar"); //a.bar is "A bar"
var b=new ExampleClass("B bar"); //b.bar is "B bar"
वस्तुओं a
और b
ही प्रोटोटाइप है (यह स्मृति बचाता है) लेकिन वे विभिन्न गुणों निर्माता में सेट कर सकते हैं।
OffTop
जावास्क्रिप्ट में, इतने सारे संभावनाओं वस्तुओं बनाने के लिए है मैं तीसरा उदाहरण कैसे पहले अंकन में रन कोड है:
window.fooModule = {
init: function() {
this.bar = "cee";
this.doStuff();
return this;//return this
},
doStuff: function() {
}
}.init();//run init after object notation
मैं वस्तु बना सकते हैं और एक बार में init चलाते हैं।
स्रोत
2016-09-09 13:05:51
दूसरा एक [बिल्कुल भयानक है] (http://stackoverflow.com/q/10406552/1048572) और कभी नहीं – Bergi
कि मूर्ख है हटा दिया झंडा, पर ले जाने के लिए प्रयोग किया जाता जाना चाहिए ओह,,! – Roberrrt
अंतर यह है कि पहले में 'doStuff() 'नाम त्रुटि के साथ विफल हो जाएगा। – deceze