Creo que la diferencia ha hecho clic en mi cabeza, pero me gustaría estar seguro.En Javascript, la diferencia entre 'Object.create' y 'new'
En la página de Douglas Crockford Prototypal Inheritance in JavaScript, dice
En un sistema de prototipos, objetos heredan de objetos. JavaScript, sin embargo, carece de un operador que realice esa operación. En su lugar, tiene un nuevo operador, de modo que new f() produce un nuevo objeto que hereda de f.prototype.
No entendí realmente lo que estaba tratando de decir en esa oración, así que realicé algunas pruebas. Me parece que la diferencia clave es que si creo un objeto basado en otro objeto en un sistema prototípico puro, entonces todos los padres miembros deben estar en el prototipo del nuevo objeto, no en el nuevo objeto en sí.
Aquí está la prueba:
var Person = function(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.toString = function(){return this.name + ', ' + this.age};
// The old way...
var jim = new Person("Jim",13);
for (n in jim) {
if (jim.hasOwnProperty(n)) {
console.log(n);
}
}
// This will output 'name' and 'age'.
// The pure way...
var tim = Object.create(new Person("Tim",14));
for (n in tim) {
if (tim.hasOwnProperty(n)) {
console.log(n);
}
}
// This will output nothing because all the members belong to the prototype.
// If I remove the hasOwnProperty check then 'name' and 'age' will be output.
es mi entendimiento correcto que la diferencia sólo se hace evidente cuando las pruebas de los miembros en el objeto en sí mismo?
ver http://stackoverflow.com/questions/4166616/understanding-the-difference-between-object-create-and-new-somefunction-in-j –
Ayer había visto esa pregunta, creo, pero el la respuesta no estaba clara para mí. Ahora que realicé mis exámenes y escribí mi pregunta, está claro. – Jules