Javascript范围链

时间:2010-03-09 03:45:39

标签: javascript performance scope micro-optimization

我正在尝试优化我的程序。我想我理解关闭的基础知识。我对范围链感到困惑。

我知道通常你想要一个低范围(快速访问变量)。

说我有以下对象:

var my_object = (function(){

        //private variables
        var a_private = 0;

    return{ //public
             //public variables
             a_public : 1,

             //public methods
             some_public : function(){
                  debugger;
                  alert(this.a_public);
                  alert(a_private);
             };
        };
})();

我的理解是,如果我在some_public方法中,我可以比公共方法更快地访问私有变量。这是对的吗?

我的困惑来自的范围级别。

当代码在调试器中停止时,firebug会在 this 关键字中显示公共变量。 字不在范围级别内。

访问这个有多快?现在我将任何this.properties存储为另一个局部变量,以避免多次访问它。

非常感谢!

2 个答案:

答案 0 :(得分:4)

有许多优化Javascript的好方法。

这不是其中之一 搜索范围的成本是分钟

此外,您误解了this关键字 this关键字是每个函数的隐式参数,它可以是全局window对象,调用函数的实例,也可以是传递给call或{的第一个参数。 {1}}。
apply对象将引用普通的Javascript对象;它的属性没有范围。

答案 1 :(得分:2)

首先,您是否已对自己的应用进行了分析,并且知道此代码是否存在瓶颈?

如果您的应用程序花费99.9%的时间来做其他事情,那就没有必要对此进行优化。