我试图在javascript中编写一些OOP,我偶然发现了一个问题,我确信我将在稍后的代码中使用它并希望现在处理它。
例如,使用此代码:
var FeedClass = function(){
this.init = function(){
this.loadItems();
},
this.loadItems = function(){
var that = this; // heres my problem
function inner(){
that.startLoading();
}
inner();
},
this.startLoading = function(){
alert("started Loading");
}
this.init();
};
var feed = new FeedClass();
问题是我将使用许多调用"this"
的内部函数,如果我在每个范围内编写var that = this
,我的代码将会很混乱。是否有我可以使用的其他模式或解决方法?
答案 0 :(得分:2)
您可以使用call
method设置功能的上下文:
this.loadItems = function(){
function inner(){
this.startLoading();
}
inner.call(this);
},
apply
method的工作方式类似,不同之处在于您在调用中指定参数的方式。
您还可以使用bind
method设置功能的上下文。这允许您将上下文绑定到函数并传递函数引用以便稍后调用:
this.loadItems = function(){
function inner(){
this.startLoading();
}
var i = inner.bind(this);
i();
},
注意:IE 8或更早版本不支持bind
方法。