Прототип JS против закрытия

У меня есть объект JavaScript, который делает что-то вроде этого - используя замыкание для имитации частных и публичных функций / переменных:

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; }
    }
}

Я буду создавать около 4000 экземпляров этого объекта, и из того, что я читаю, добавляю функции через прототип будет более эффективным, чем их добавление, как у меня выше (потому что в моем примере каждый экземпляр будет иметь свой собственный getXYProcust () , getNegX () и getNegY () функции.

У меня двоякий вопрос - действительно ли мой подход, описанный выше, «неэффективен»? Я понимаю, что неэффективность - понятие относительное, но я, скорее всего, это заметлю. Если он неэффективен , как мне добавить эти функции к прототипу из myCoolObject ? Я пробовал следующее:

myCoolObject.prototype.protoProp = "pppp";
myCoolObject.prototype.getAtMeBro = function () { return "get at me bro"; };
var myInstance = new myCoolObject(5, 10);

Но ни protoProp , ни 'getAtMeBro ()' не являются свойствами из myInstance , когда я его проверяю.

Заранее спасибо за любую помощь - я ценю это!

7
задан MattW 15 February 2012 в 16:39
поделиться