2013-10-19 22 views
5

codecademy.com'da javascript kursuna devam ederken biraz kafam karıştı. Farkı bilen var mı? javascript oop

Yani ilk bir Class yöntemi nasıl ekleneceğini learnring oldum:

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(); 

Sonra "prototip" başladı.

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(); 

Her iki örnek aynı sonucu veriyor: Ve bu örneği yaşandı. Bu iki örnek aynı şeyi yapan iki yol mu? Ya da ikisi arasında pratik bir fark var mı?

cevap

7

Fark, ikinci durumda, tüm örneklerin aynı sayHello işlevini paylaşmasıdır. Bu, özellikle çok sayıda örnek oluşturursanız daha verimli olur.

+3

İyi yakalama!!!!! +1 –

2

uzay ve zaman israf, her örneği için yeni bir kopyasını oluşturur yapıcı bu ile eklemeden aksine prototip yöntem sayHello sınıf Köpek tüm örnekleri tarafından paylaşılır. İşte

nasıl deyişle yeni operatör çalışır: Burada

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

olduğunu yeni operatör resmini kullanarak nasıl çalıştığını:

enter image description here

İlgili konular