2012-09-12 9 views

Respuesta

9

Porque ha reemplazado completamente el objeto prototype original de f con un objeto simple. Era el objeto original prototype que contenía la referencia a f a través de la propiedad .constructor.

El constructor de un objeto creado utilizando la sintaxis literal del objeto será el constructor Object.

Para recuperarlo, debe colocarlo allí manualmente.

f = function() {}; 
f.prototype = {}; 
f.prototype.constructor = f; 
thing = new f; 

Esto sombra sobre la propiedad .constructor en la cadena de prototipo del nuevo objeto prototipo.

Si borra esa propiedad, obtendrá Object nuevamente.

delete f.prototype.constructor; 

console.log(thing.constructor); // Object 
Cuestiones relacionadas