1

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

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

假设我有以下对象:

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 方法中,我可以比公共变量更快地访问私有变量。它是否正确?

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

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

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

非常感谢!

4

2 回答 2

4

有很多优化 Javascript 的好方法。

这不是其中的一个。
搜索范围的成本是微乎其微的。

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

于 2010-03-09T03:50:18.290 回答
2

首先,您是否分析过您的应用程序,您是否知道此代码是一个瓶颈?

如果您的应用程序将 99.9% 的时间花在做其他事情上,那么优化这一点毫无意义。

于 2010-03-09T03:50:27.633 回答