2011-09-05 6 views
5

में "प्रोटोटाइप" का उपयोग कब करना चाहिए मैंने जावास्क्रिप्ट/JQuery में प्रोग्रामिंग की उचित मात्रा में किया है।मुझे जावास्क्रिप्ट

लेकिन मैंने कभी "प्रोटोटाइप" का उपयोग नहीं किया। वास्तव में, मेरे पास इसका कोई मतलब नहीं है इसका मतलब है।

क्या आपके पास उपयोगी होने पर व्यावहारिक उदाहरण है?

+5

इसका मतलब 2 चीजें: जावास्क्रिप्ट ढांचा, और ऑब्जेक्ट्स को विस्तार और परिभाषित करने के लिए जावास्क्रिप्ट विधि हो सकता है। दोनों पूरी तरह से अलग हैं। सुनिश्चित नहीं है कि आप दोनों में से कौन सा मतलब है। –

+0

यह सवाल संदिग्ध है। Lib या obejcts संपत्ति? – user278064

+1

आपको शायद पढ़ना चाहिए: [एमडीएन - ऑब्जेक्ट ओरिएंटेड जावास्क्रिप्ट का परिचय] (https://developer.mozilla.org/En/Introduction_to_Object-Oriented_JavaScript)। –

उत्तर

9

सबसे सरल उदाहरण:

function Foo() { 
    this.bar = function() { 
     return 42; 
    } 
} 

अब के रूप में आप चाहते हैं आप Foo के रूप में कई उदाहरण बना सकते हैं और फोन bar() कर सकते हैं:

var a = new Foo(); 
var b = new Foo(); 

भी हालांकि दोनों ऑब्जेक्ट मेंहैविधि जो दोनों मामलों में बिल्कुल समान है, ये अलग-अलग तरीके हैं। वास्तव में, प्रत्येक नई Foo ऑब्जेक्ट में इस विधि की एक नई प्रति होगी।

दूसरी ओर:

function Foo() {} 
Foo.prototype.bar = function() { 
    return 42; 
}  

एक ही अंतिम परिणाम है, लेकिन समारोह prototype वस्तु के बजाय एक वस्तु अपने आप में केवल एक बार संग्रहित है। यदि आप Foo उदाहरण बनाते हैं और कुछ मेमोरी को सहेजना चाहते हैं तो यह एक सौदा ब्रेकर हो सकता है।

2

आप यह मानते हुए Object.prototype के बारे में पूछ रहे हैं,

जावास्क्रिप्ट में सभी वस्तुओं वस्तु से उत्पन्न हुए हैं; ऑब्जेक्ट.प्रोटोटाइप से सभी ऑब्जेक्ट्स विधियों और गुणों का उत्तराधिकारी होते हैं, हालांकि उन्हें ओवरराइड किया जा सकता है। उदाहरण के लिए, अन्य रचनाकारों के प्रोटोटाइप कन्स्ट्रक्टर प्रॉपर्टी को ओवरराइड करते हैं और अपनी खुद की स्ट्रिंग विधियों को प्रदान करते हैं। ऑब्जेक्ट प्रोटोटाइप ऑब्जेक्ट में परिवर्तन सभी ऑब्जेक्ट्स के लिए प्रचारित किए जाते हैं जब तक कि उन परिवर्तनों के अधीन गुण और विधियां प्रोटोटाइप श्रृंखला के साथ ओवरराइड नहीं होतीं।

पढ़ें this और फिर शायद this

संबंधित मुद्दे