如何优化Javascript查找?

时间:2012-10-17 21:19:48

标签: javascript

根据Javascript的主要实现,变量和函数的查找从现场开始并向上遍历直到全局对象。

现在假设您正在构建更大的基于OOP的框架,并且您需要在所有地方调用安全检查,然后以这样的方式调用这些东西似乎是正确的:“xapp.utils.isValidString(var)。同样的适用于通常在任何地方发生的常数,枚举和标志。

我不确定这是否会对答案产生影响,但我们在Dojo中做了所有事情,我们非常了解它的lang.mixin方法。

然而,我们的想法是通过使用构造函数或原型将一组明显的和最小的函数和对象混合到目标对象的本地范围中。你认为这是合法的方式吗?

然后缓存和重用那些准备好的对象呢?你会选择哪种缓冲?对我而言,它看起来就像一个环形缓冲区。

我仍然在学习JS优化,我会对你的想法感到高兴!

供大家参考,这里有一些关于范围管理的常见技巧:http://googlecode.blogspot.com.es/2009/06/nicholas-c-zakas-speed-up-your.html

更新:我们只需要关注现代桌面和移动浏览器,让IE完全退出! 此外,我们熟悉Dojo的构建链,为每个平台启用条件编译(如果这很重要)。

1 个答案:

答案 0 :(得分:0)

至于标识符解析,即直接引用,我建议你切换到严格的语言(如果你还没有),a.k.a。“严格模式”。严格语言是静态范围的,它使JS引擎能够静态绑定标识符,从而在程序执行期间获得更好的性能(标识符在编译期间已被绑定)。


至于财产查询,如果你有长链,例如

foo.bar.baz.method1();
foo.bar.baz.method2();

通常的解决方案(不仅仅是为了提高性能,还要避免代码重复)是将最右边的对象存储到局部变量中:

var baz = foo.bar.baz;

baz.method1();
baz.method2();