Našiel som tento článok na webe, ktorý ma veľmi mätie.
http://jonathancreamer.com/object-literals-and-prototypes-in-javascript/
Keď spustím nasledujúci kód
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";
};
Hlavolamom je, že aj keď Pizza.prototyp.konštruktor v prípade1: je funkcia konštruktora a Pizza.prototype.constrcutor v prípade2: je funkcia objektu () a prípad2: oddeľuje reťazec dedičnosti. Ale prečo potom, keď popravím sausagePizza.divvyUp () pre oba prípady dostanem rovnaký výsledok. Keď však case2: oddeľuje dedičský reťazec a už neodkazuje na konštruktér Pizza (), tak prečo dostanem výsledok pre case2 podobný case1
odpovede:
2 pre odpoveď č. 1Prvý nahradí celý prototype
s objektom obsahujúcim jednu funkciu - divvyUp
.
Ten upraví existujúce prototype
, PRIDANIE (alebo nahradenie) funkcie divvyUp
.
vyskúšať
console.log(Pizza.prototype);
po každej a mať lookie.