pra*_*raj 1 javascript arrays performance object
我正在开发一个Web应用程序并在JavaScript中创建许多对象,我需要在整个会话期间维护这些对象,或者当网站打开时我将所有对象都引用到单个全局对象.它会影响webb app的性能吗?
var Obj1 = somethig;
var obj200 = something;
window.global.Obj1 = Obj1;
window.global.Obj200 = Obj200;
Run Code Online (Sandbox Code Playgroud)
免责声明:我是Internet Explorer 9及更高版本中Chakra Javascript引擎的软件工程师(来自18号楼的Hello!)
简而言之:"它取决于" - 我们需要知道你正在创建多少个对象,它们有多复杂(因为JavaScript没有类,但是原型和实例),你创建它们的频率,以及你的脚本/ program会导致GC收集对象(GC运行并不漂亮).
一些技巧:
坏:
for(var i = 0; i < 1000; i++ ) {
var foo = { baz: function() { return 5; } };
foo.bar();
}
Run Code Online (Sandbox Code Playgroud)
好:
function Foo() { } // `Foo` constructor.
Foo.prototype.baz = function() { return 5; };
for(var i=0; i < 1000; i++ ) {
var foo = new Foo();
foo.bar();
}
Run Code Online (Sandbox Code Playgroud)
也不错:
function Foo() { }
Foo.baz = function(foo) { return 5; };
for(var i=0; i < 1000; i++ ) {
var foo = new Foo();
Foo.bar( foo );
}
Run Code Online (Sandbox Code Playgroud)
至于你的代码示例,如果你在根范围内(被调用global,在浏览器中被window对象别名),则var关键字具有创建属性的效果.所以这:
var Obj1 = somethig;
var obj200 = something;
window.Obj1 = Obj1; // there is no `window.global` object
window.Obj200 = Obj200;
Run Code Online (Sandbox Code Playgroud)
...实际上并没有做任何事情:var Obj1 与此相同window.Obj1.
最后,一个protip:只给出Constructor函数TitleCase名,否则为其他所有(vars,parameters,locals等)lowerCase命名.召唤一个实例Obj1让我的脸抽搐了一下.
与往常一样,黄金法则适用:过早优化是所有邪恶的根源 - 在对代码进行重大更改之前首先查看代码以查看是否存在问题(IE 11的F12工具非常适合检查内存和处理性能你的代码,顺便说一下 - 不是我不偏不倚!).
| 归档时间: |
|
| 查看次数: |
1274 次 |
| 最近记录: |