Perché l'oggetto originale prototype
f
è stato sostituito con un oggetto semplice. Era l'oggetto originale prototype
che conteneva il riferimento a f
tramite la proprietà .constructor
.
Il costruttore di un oggetto creato utilizzando la sintassi letterale dell'oggetto sarà il costruttore Object
.
Per recuperarlo, è necessario inserirlo manualmente.
f = function() {};
f.prototype = {};
f.prototype.constructor = f;
thing = new f;
Ciò ombra la proprietà .constructor
su nella catena di prototipi del nuovo oggetto prototipo.
Se elimini quella proprietà, riceverai di nuovo Object
.
delete f.prototype.constructor;
console.log(thing.constructor); // Object
fonte
2012-09-12 19:29:12