2013-01-10 6 views
5

Eventuali duplicati:
What it the significance of the Javascript constructor property?Quando è necessario impostare la proprietà 'prototype.constructor' di una classe in Javascript?

Nel Javascript docs a developer.mozilla.org, sul tema della eredità c'è un esempio

// inherit Person 
Student.prototype = new Person(); 

// correct the constructor pointer because it points to Person 
Student.prototype.constructor = Student; 

mi chiedo perché dovrebbe Aggiorno la proprietà del costruttore del prototipo qui?

risposta

2

Ogni funzione ha una proprietàprototype (anche se non è stato definito esso), prototype oggetto ha l'unica proprietà constructor (indicando una funzione stessa). Quindi dopo aver effettuato il Student.prototype = new Person();constructor la proprietà di prototype sta puntando sulla funzione Person, quindi è necessario ripristinarla.

Non si dovrebbe considerare prototype.constructor come qualcosa di magico, è solo un puntatore a una funzione. Anche se salti linea Student.prototype.constructor = Student; linea new Student(); funzionerà come dovrebbe.

constructor proprietà è utile ad es. in seguito situazioni (quando è necessario clonare oggetto, ma non si sa esattamente quale funzione aveva creato):

var st = new Student(); 
... 
var st2 = st.constructor(); 

quindi è meglio per assicurarsi prototype.constructor() è corretta.

+0

'var st2 = st.constructor();' manca la parola chiave 'new'. Dovrebbe essere 'var st2 = new st.constructor();' – golem

Problemi correlati