我有一个像这样的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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我将创建4000左右这个对象的实例,并从我所读通过添加功能prototype会比添加它们,因为我有以上(更有效,因为在我的例子,每个实例都会有它自己的getXYProcust(),getNegX()和getNegY()功能.
我的问题是双重的 - 我上面的方法真的"低效"吗?我意识到低效率是一个相对的术语 - 但这是我可能会注意到的.如果是低效的,我怎么会添加这些功能给prototype的myCoolObject?我尝试了以下方法:
myCoolObject.prototype.protoProp = "pppp";
myCoolObject.prototype.getAtMeBro = function () { return "get at me bro"; };
var myInstance = new myCoolObject(5, 10);
Run Code Online (Sandbox Code Playgroud)
但是当我检查它时,protoProp'getAtMeBro()'都不是属性myInstance.
在此先感谢您的帮助 - 我很感激!
最好的建议是尝试一下看看。在现代 JS 引擎中,您应该发现 4,000 个对象是小孩子的游戏,不应该成为问题(前提是每个对象都不会变得太大)。如果您的用户使用 IE6 及较旧的引擎,请做好准备,让他们能够应对更少的问题。
例如,Facebook 时间轴提要需要约 4000 个(我尝试时为 3992 个)DOM 元素;其中每一个都比您正在创建的对象复杂得多(当然,它们使用原型方法,但它们包含更多信息)。
使用 's 时不能应用私有成员模式prototype,因为不能创建闭包来封装两者。这里的典型模式是用前导表示私有成员_,暗示人们不要使用它(但是当然,没有什么可以阻止他们这样做)。
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |