javascript – JS原型与封闭

前端之家收集整理的这篇文章主要介绍了javascript – JS原型与封闭前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个像这样的 JavaScript对象 – 使用闭包来模拟私有vs公共函数/变量:
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的属性.

在此先感谢您的帮助 – 我很感激!

解决方法

>最好的建议是试试看.在现代的JS引擎中,你会发现4,000个对象是小孩玩的,不应该是一个问题(前提是每个对象都不会太大).如果你有IE6和旧引擎的用户,请为他们做好准备,以便能够应对更少.

例如,Facebook时间线源需要~4000(当我尝试时为3992)DOM元素;每个都比你正在创建的对象复杂得多(被授予,他们使用原型方法,但他们掌握了更多的信息).>在使用原型时,不能应用私有成员模式,因为您无法创建封装来封装两者.这里的典型模式是表示具有前导_的私人成员,暗示人们不使用它(当然,没有什么能阻止他们这样做).

猜你在找的JavaScript相关文章