据我所知,在this
范围可能发生变化的回调中使用this
赋值给变量。但是通过ExtJS源我发现它在各种函数中使用但并非总是如此。那么我有没有理由将this
分配给范围下的局部变量,或者ExtJS源只是在与不同的开发人员风格斗争?
答案 0 :(得分:3)
仅限尺寸。这是一个例子:
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
分配给变量而不是必需。