2012-09-12 14 views

risposta

9

Perché l'oggetto originale prototypef è 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 
Problemi correlati