अच्छा, कुरूपता व्यक्तिपरक है, लेकिन देखते हैं।
आप आम तौर पर लिखें:
function Foo() {}
Foo.prototype.method1 = function() { /*...*/ };
Foo.prototype.method2 = function() { /*...*/ };
आप गुण है कि आप नए ऑपरेटर द्वारा बनाई उदाहरणों को विरासत में मिला होना चाहते हैं के साथ prototype
वस्तु एक constructor function का विस्तार।
var obj = new Foo();
आप Foo
निर्माता का एक उदाहरण बना रहे हैं के साथ उदाहरण के लिए, उस वस्तु सभी गुण Foo.prototype
वस्तु और अन्य वस्तुओं prototype chain में उच्च करने के लिए बाध्य प्राप्त कर लेगा।
Crockford की विधि एक ही है, उस विधि Function.prototype
वस्तु में परिभाषित किया गया है करता है, सभी कार्यों उस वस्तु से विरासत है, तो आप इस तरह विधि कॉल कर सकते हैं:
function Foo() {}
Foo.method('method1', function() { /*...*/ });
Foo.method('method2', function() { /*...*/ });
यह मूल रूप से सिर्फ खाल कोड है, जो Crockford समझता है बदसूरत से prototype
शब्द ...
"जावास्क्रिप्ट अच्छा पार्ट्स" एक बहुत अच्छी किताब है, लेकिन मैं व्यक्तिगत दृष्टिकोण पर आधारित है लगता है कि डगलस Crockfor डी भाषा का है।
मैं बहुत कुछ के साथ उसके साथ सहमत हूँ, लेकिन मैं यह भी कुछ पहलुओं से असहमत हैं ...
शब्द "प्रोटोटाइप" का उपयोग करना अधिक स्पष्ट और स्पष्ट जब कोड को पढ़ने लगता है। उत्तर के लिए धन्यवाद :) – Matrym
मैं सहमत हूं। इस मामले में क्रॉकफोर्ड गलत पेड़ को भड़क रहा है। – bobince