微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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元素;每个都比你正在创建的对象复杂得多(被授予,他们使用原型方法,但他们掌握了更多的信息).>在使用原型时,不能应用私有成员模式,因为您无法创建封装来封装两者.这里的典型模式是表示具有前导_的私人成员,暗示人们不使用它(当然,没有什么能阻止他们这样做).

原文地址:https://www.jb51.cc/js/157134.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐