2013-10-19 6 views
5

codecademy.com पर जावास्क्रिप्ट कोर्स के माध्यम से जाने के दौरान, मैं थोड़ा उलझन में आ गया हूं।क्या कोई मुझे अंतर बता सकता है? जावास्क्रिप्ट ओप

तो सबसे पहले हम एक कक्षा के लिए विधि जोड़ने का तरीका learnring किया गया है:

function Dog (breed) { 
    this.breed = breed; 
    this.sayHello = function() { 
     console.log("Hello this is a " + this.breed + " dog"); 
    } 
}; 
var someDog = new Dog("golden retriever"); 
someDog.sayHello(); 

फिर हम "प्रोटोटाइप" शुरू कर दिया।

function Dog (breed) { 
    this.breed = breed; 
}; 
Dog.prototype.sayHello = function() { 
    console.log("Hello this is a " + this.breed + " dog"); 
} 
var someDog = new Dog("golden retriever"); 
someDog.sayHello(); 

दोनों उदाहरण एक ही परिणाम दे रहे हैं: और वहाँ इस उदाहरण था। क्या ये दो उदाहरण एक ही काम करने के दो तरीके हैं? या उनमें से दो के बीच एक व्यावहारिक अंतर है?

उत्तर

7

अंतर यह है कि दूसरे मामले में, सभी उदाहरण एक ही sayHello फ़ंक्शन साझा करते हैं। यह अधिक कुशल है, खासकर अगर आप बहुत सारे उदाहरण बनाते हैं।

+3

अच्छी पकड़!!!!! +1 –

2

रूप निर्माता जो प्रत्येक उदाहरण के लिए एक नए सिरे से कॉपी बन जाती है, अंतरिक्ष और समय बर्बाद कर में इस साथ इसे जोड़ने के लिए विरोध प्रोटोटाइप विधि sayHello वर्ग कुत्ते के सभी उदाहरणों द्वारा साझा किया जाता।

यहाँ है कैसे नई शब्दों में ऑपरेटर काम करता है:

https://gist.github.com/Havvy/5037770

यहाँ है कैसे नई ऑपरेटर एक तस्वीर का उपयोग कर काम करता है:

enter image description here

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