Hasta ahora, si desea crear un objeto, sólo se puede usar literales:
var obj = {};
o la Object
constructor.
var obj = Object();
Pero ninguno de estos métodos le permiten especificar el prototipo del objeto creado.
Esto es lo que puede hacer ahora con Object.create
. Te permite crear un nuevo objeto y establece el primer argumento como prototipo del nuevo objeto. Además, le permite establecer propiedades del nuevo objeto provisto como segundo argumento.
Es similar a hacer algo como esto (sin el segundo argumento):
function create(proto) {
var Constr = function(){};
Constr.prototype = proto;
return new Constr();
}
Así que si usted está utilizando una construcción similar a este, esto cuando desea utilizar Object.create
.
No es un reemplazo para new
. Es más una adición para simplificar la creación de objetos únicos que deberían heredar de otro objeto.
Ejemplo:
I tiene un objeto a
:
var a = {
someFunction: function() {}
};
y quiero b
para extender este objeto. A continuación, puede utilizar Object.create
:
b = Object.create(a);
b.someOtherFunction = function(){};
Siempre que tenga una función constructora, pero sólo una instancia uno objeto de ella, es posible que pueda reemplazar esto con Object.create
.
Hay una regla general que se aplica. Depende mucho de lo que haga la función de constructor y cómo herede de otros objetos, etc.
Véanse las respuestas a esta pregunta: http://stackoverflow.com/questions/4166616/understanding-the-difference-between- object-create-and-new-somefunction-in-ja –
Vea esto también con todas las respuestas nuevas, http://stackoverflow.com/questions/387707/whats-the-best-way-to-define-a-class -in-javascript –