JS原型vs封闭

我有一个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个实例,并且从我正在阅读的内容中,通过prototype添加函数将比添加它们更有效(因为在我的示例中,每个实例都有它自己的getXYProcust()getNegX()getNegY()函数。

我的问题是双重的 - 我的方法是否真的“低效”? 我意识到低效率是一个相对的术语 - 但这是我可能会注意到的。 如果效率低下,我将如何将这些函数添加到myCoolObjectprototype中? 我尝试了以下内容:

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

但是当我检查它时, protoProp和'getAtMeBro()'都不是myInstance属性。

预先感谢任何帮助 - 我欣赏它!


  • 最好的建议是尝试一下,看看 。 在现代的JS引擎中,你会发现4,000个对象是儿童游戏,不应该是一个问题(如果它们每个都不会太大)。 如果你的用户使用IE6和更老的引擎,请为他们做好准备,以便能够应对更少的问题。

    举例来说,Facebook时间轴Feed需要〜4000(当我尝试时为3992)DOM元素; 其中每一个都比你创建的对象复杂得多(授予他们使用原型方法,但他们拥有更多的信息)。

  • 在使用prototype时,你不能应用私有成员模式,因为你不能创建一个封闭来封装两者。 这里的典型模式是表示一个带有_的私人成员,以暗示不使用它的人(但是当然,没有任何事情阻止他们这样做)。

  • 链接地址: http://www.djcxy.com/p/10435.html

    上一篇: JS prototype vs closure

    下一篇: Send custom HTTP request header with HTML5 audio tag