Tengo un objeto JavaScript que hace algo como esto - con ayuda de un cierre para simular privada frente a las funciones públicas/variables:JS prototipo vs cierre
var myCoolObject = function(x, y) {
var prop1 = "a cool prop1 value";
var negX = x * -1;
var negY = y * -1;
var xyProduct = x * y;
return {
PublicProp1: prop1,
getXYProduct: function() { return xyProduct; },
getNegX: function() { return negX; },
getNegY: function() { return negY; }
}
}
Voy a crear alrededor de 4.000 casos de este objeto, y desde lo que estoy leyendo la adición de funciones a través de la prototype
será más eficiente que la adición de ellos como lo he hecho anteriormente (ya que en mi ejemplo, cada instancia tendrá sus propias getXYProcust()
, getNegX()
y getNegY()
funciones
mi pregunta es doble -. es mi enfoque anterior realmente "ineficiente"? Me doy cuenta de que ineficiente es un término relativo, pero es algo que probablemente notará. Si no es eficiente, ¿cómo agregaría esas funciones al prototype
de myCoolObject
? He intentado lo siguiente:
myCoolObject.prototype.protoProp = "pppp";
myCoolObject.prototype.getAtMeBro = function() { return "get at me bro"; };
var myInstance = new myCoolObject(5, 10);
Pero ni protoProp
ni 'getAtMeBro()' son propiedad de myInstance
cuando inspeccionarlo.
Gracias de antemano por cualquier ayuda - ¡Lo aprecio!
¿Cómo se ve el constructor ahora? Asegúrate de no devolver nada (o simplemente 'esto'). –
No estoy seguro de entender la pregunta? el constructor se vería como el nuevo myCoolObject (5, 10) cuando lo instanciara. – MattW
No, el constructor es la función que se usa con la palabra clave 'new', como' function myCoolObject() {} ' –