Perché queste 2 implementazioni si comportano diversamente? Cosa li distingue esattamente quando si tratta di valutare i loro prototipi?Perché Object.create() e new Object() valutano su diversi prototipi?
Creazione di un oggetto con il prototipo specificato:
function Foo() {}
// creates an object with a specified prototype
var bar = Object.create(Foo);
console.log(Object.getPrototypeOf(bar)); // returns: function Foo(){}
console.log(Foo.isPrototypeOf(bar)); // returns: true
Creazione di un oggetto con il metodo di costruzione:
function Foo() {}
// creates an object with the constructor method
var bar = new Foo();
console.log(Object.getPrototypeOf(bar)); // returns: Foo {}
console.log(Foo.isPrototypeOf(bar)); // returns: false
Inoltre, perché la seconda realizzazione di ritorno sia Foo {}
e false
?
"Inoltre, perché la seconda implementazione restituisce sia Foo {} che falso?" è una grande domanda. Ho aggiornato la mia risposta per affrontarlo. – joews
Si noti che di solito si esegue 'var bar = Object.create (Foo.prototype);', che fornisce il comportamento previsto. – Paulpro
possibile duplicazione di [Capire la differenza tra 'Object.create()' e 'new SomeFunction()'] (http://stackoverflow.com/q/4166616/1048572) – Bergi