Próbuję zrozumieć moją prototypowanie javascript & możliwe dziedzictwo, ale na pewno czegoś brakuje. Zacznijmy od prostego konstruktora (licznik function()), dodając prosty mienia i konkretyzacji obiektu:Dlaczego resetowanie prototypu nie powoduje usunięcia właściwości z obiektów?
function Counter() { this.a = "first"; };
Counter.prototype.b = "second";
var counter = new Counter();
w tym momencie counter.a
zwraca „pierwszy”, counter.b
powroty „drugi” i counter.c
jest oczywiście undefined
który jest wszystko zrozumiałe. Dodajmy kolejną właściwość prototypu konstruktora:
Counter.prototype.c = "third";
Teraz counter.c
wróci „trzeciego”. Ale ... my zmieniliśmy nasz umysł, pozwala pozbyć się tych właściwości:
Counter.prototype = {};
Stosując prostą logikę, podczas nadpisywania counter
prototypu prototype
własność, będziemy tracić właściwości counter
które dodaliśmy do wcześniej Counter.prototype. Ale tak nie jest - counter.c
Zwraca "trzeci". Jestem tutaj zagubiony. Więc ... spróbujmy zastąpić wartość:
Counter.prototype.c = "fourth hohoho";
Nic się nie zmienia, counter.c nadal zwraca "trzeci".
Dlaczego nie udało się usunąć właściwości? czego mi brakuje?
Spójrz jak prototypy działają w JavaScript. – mash
Konstruktor jedynie ustanawia relację między nowym obiektem a obiektem '.prototype' konstruktora. Po tym etapie konstruktor nie ma większego znaczenia. Istotna jest relacja między tymi dwoma obiektami. –
Duh, okazuje się, że to takie trywialne. –