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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...