Dato il seguente codice:Come posso vedere la catena di prototipi di un oggetto Javascript?
function a() {}
function b() {}
b.prototype = new a();
var b1 = new b();
possiamo stare che a
è stato aggiunto a b
s' prototipo catena. Grande. E, tutte le seguenti condizioni:
b1 instanceof b
b1 instanceof a
b1 instanceof Object
La mia domanda è, che cosa se non sappiamo le origini di b1
prima del tempo? Come possiamo scoprire i membri della sua catena di prototipi? Idealmente mi piacerebbe un array come [b, a, Object]
o ["b", "a", "Object"]
.
È possibile? Credo di aver visto una risposta da qualche parte su SO che ha descritto come scoprire solo questo, ma non posso per la vita di me ritrovarlo.
'costruttore 'fornisce la funzione di costruzione del prototipo antenato più vicino che non ha ereditato da un altro prototipo di costruttore. Questo non è quasi mai quello che vuoi. Per esempio nel codice della domanda, 'b1.constructor' è' a', non 'b', e se hai derivato un oggetto' c' da 'b', un' c1.constructor' sarebbe ancora 'a'. Normale regola pratica: non usare 'costruttore 'per qualcosa di mai. [eta: lol @ 'spaventato e solitario' ... sì, questa è una di quelle parti di JavaScript che è stata progettata per confondervi da capo facendo qualcosa che sembra utile ma in realtà è una trappola.] – bobince
Sì, I considera la domanda originale un esercizio interessante ma non è mai qualcosa che avrei inserito nel codice che mi aspettavo di funzionare effettivamente. C'è una spiegazione molto bella qui: http://mckoss.com/jscript/object.htm – Pointy