Tengo el siguiente código:¿Por qué cambiar el prototipo no afecta a los objetos creados anteriormente?
var A = function() {};
var a = new A();
var b = new A();
A.prototype.member1 = 10;
A.prototype = {}
var c = new A();
console.log(a.member1);
console.log(a.constructor === b.constructor);
console.log(a.constructor === c.constructor);
console.log('---------');
console.log(c.member1);
Es salida es:
10
true
false
---------
undefined
undefined
El prototipo de a
y b
no ha cambiado y c
tenían una nueva. ¿Tengo razón en que esto fue causado por el hecho de que a.constructor
no es igual a c.constructor
y cada uno de ellos tenía prototype
? ¿Hay otros circs cuando los constructores de dos objetos pueden no ser iguales?
Pregunta adicional: ¿por qué se imprimieron dos cadenas undefined
? (Cromo)
¿Se supone que 'a1' es' c'? –
Lo siento, mi error. Corregido;) –
¿Estás en Chrome? Si es así, 'console.log (undefined)' registrará dos cosas: el 'undefined' registrado y el' undefined' devuelto. – pimvdb