在没有回调的情况下将其分配给区域设置变量的原因是什么?

时间:2013-07-22 12:57:45

标签: extjs extjs4 extjs4.2

据我所知,在this范围可能发生变化的回调中使用this赋值给变量。但是通过ExtJS源我发现它在各种函数中使用但并非总是如此。那么我有没有理由将this分配给范围下的局部变量,或者ExtJS源只是在与不同的开发人员风格斗争?

3 个答案:

答案 0 :(得分:3)

@kevhender向我指出右翼sencha forum thread,埃文给出了很好的解释。

仅限尺寸。这是一个例子:

function doA() {
    var me = this;

    me.a();
    me.b();
    me.c();
    me.d();
    me.e();
    me.f();
    me.g();
    me.h();
    me.i();
    me.j();
    me.k();
    me.l();
}

function doB() {
    this.a();
    this.b();
    this.c();
    this.d();
    this.e();
    this.f();
    this.g();
    this.h();
    this.i();
    this.j();
    this.k();
    this.l();
}

压缩我们得到:

function doA(){var a=this;a.a();a.b();a.c();a.d();a.e();a.f();a.g();a.h();a.i();a.j();a.k();a.l()}
function doB(){this.a();this.b();this.c();this.d();this.e();this.f();this.g();this.h();this.i();this.j();this.k();this.l()};

它加起来。


根据我们应该

  • NOT 如果我们最多使用三次,则使用本地变量

    function doA(){var a=this;a.a();a.b();a.c();};
    function doB(){this.a();this.b();this.c();};
    
  • 如果我们经常使用它三次

    ,请使用它
    function doA(){var a=this;a.a();a.b();a.c();a.d()};
    function doB(){this.a();this.b();this.c();this.d()};
    

答案 1 :(得分:2)

这有几个原因,最重要的是使用局部变量将在压缩文件期间节省几个字节。对于一小段代码来说可能看起来不是很多,但随着时间的推移它会增加很多。

Sencha论坛上有一个很长的帖子谈论这个问题:http://www.sencha.com/forum/showthread.php?132045

答案 2 :(得分:0)

正如您所说,this有时会在范围可能发生变化的地方使用。

在某些情况下,您需要执行相同操作以确保没有范围问题。

除此之外,开发者有时只会根据习惯将this分配给变量而不是必需。