Намерих тази статия в мрежата, която много ме обърква.
http://jonathancreamer.com/object-literals-and-prototypes-in-javascript/
Когато изпълня следния код
case2:
Pizza.prototype = {
divvyUp: function () {
return this.type + " pizza which has " + this.slices +" slices";
}
};
Versus case1:
Pizza.prototype.divvyUp = function () {
return this.type + " pizza which has " + this.slices +" slices";
};
Главният глас е, че макар и Pizza.prototype.конструктор в случай1: е функцията конструктор и Pizza.prototype.constrcutor в случай2: е функция обект () и случай2: разединява веригата на наследяване. Но защо тогава, когато изпълнявам sausagePizza.divvyUp () и за двата случая получавам един и същ резултат. Въпреки това, когато case2: е разединяването на веригата за наследяване и повече не се позовава на конструктора на Pizza (), тогава защо получавам резултата за case2, подобен на case1
Отговори:
2 за отговор № 1Първият ще замени цял prototype
с обект, съдържащ една-единствена функция - divvyUp
.
Последният ще модифицира съществуващ prototype
, ДОБАВЯНЕ (или замяна) на функцията divvyUp
.
Опитвам
console.log(Pizza.prototype);
след всеки и имайте поглед.