Dado el siguiente código:¿Cómo puedo ver la cadena de prototipos de un objeto Javascript?
function a() {}
function b() {}
b.prototype = new a();
var b1 = new b();
nos podemos quedar a
que se ha añadido a b
's cadena de prototipo. Estupendo. Y, todo lo siguiente es cierto:
b1 instanceof b
b1 instanceof a
b1 instanceof Object
Mi pregunta es, ¿y si no sabemos el origen de b1
antes de tiempo? ¿Cómo podemos descubrir a los miembros de su cadena de prototipos? Lo ideal sería que quisiera una matriz como [b, a, Object]
o ["b", "a", "Object"]
.
¿Esto es posible? Creo que he visto una respuesta en algún lugar de SO que describió cómo descubrir esto, pero no puedo encontrarla de nuevo.
'constructor' le da la función constructora del ancestro prototipo más cercano que no ha heredado de otro prototipo de constructor. Esto casi nunca es lo que quieres. Por ejemplo, en el código de la pregunta, 'b1.constructor' es' a', no 'b', y si derivabas un objeto' c' de 'b', un' c1.constructor' seguiría siendo 'a'. Regla general: no use 'constructor' para nada. [eta: lol @ 'miedo y soledad' ... sí, esta es una de esas partes de JavaScript que está diseñada para confundirte al hacer algo que parece útil pero que en realidad es una trampa.] – bobince
Sí, yo Considero la pregunta original un ejercicio interesante, pero nunca fue algo que puse en el código que esperaba que realmente funcionara. Aquí hay una explicación muy buena: http://mckoss.com/jscript/object.htm – Pointy