有没有办法避免在方法体中的每个成员之前使用this.
?
JavaScript在很多方面都很神奇,但有一点让人难以理解的是你必须在每个成员之前使用this.
:
TList.on_key = function(key) {
if (key == 116) {
this.sid++;
if (this.sid > this.items.length - 1) this.sid = this.items.length - 1
if (this.sid >= this.d + (this.h * this.columns)) this.d++
}
如果没有所有this.
:
TList.on_key = function(key) {
if (key == 116) {
sid++;
if (sid > items.length - 1) sid = items.length - 1
if (sid >= d + (h * columns)) d++
}
答案 0 :(得分:3)
是的,你可以使用“有争议的”with
statement,只要你没有处于禁止的“严格模式”。
TList.on_key = function(key) {
with(this) {
if (key == 116) {
sid++;
if (sid > items.length - 1) sid = items.length - 1
if (sid >= d + (h * columns)) d++
}
}
}
在使用它之前一定要充分了解它,因为它的语义可以让人们措手不及。
答案 1 :(得分:1)
不幸的是没有。 Javascript没有像Java这样的范围控件。您需要指定是否要获取本地var或对象var“this”。但你可以说出来。
var Test = function(){
var $ = this;
$.test = function(){
return 'lalalal';
};
};
答案 2 :(得分:0)
“this”参数在面向对象编程中非常重要,其值由JavaScript中的调用模式决定,这就是为什么我们无法避免这种情况。 有关更多信息,您可以阅读Douglas Crockford的“JavaScript:The Good Parts”中的函数调用。
答案 3 :(得分:0)
不幸的是,这是不可能的。我建议不要使用with statement
因为它有它的缺点。请使用The JavaScript Code Quality Tool
JavaScript this关键字在任何函数范围或全局范围内使用,并且在每个范围内它接收不同的值。函数内部的这个值实际上取决于调用它的对象。阅读this keyword
的更多信息