我正在尝试调用泛型函数,但是当执行该函数时,我处于不同的范围(窗口)。此代码将描述案例:
Ext.application({
name : 'Fiddle',
context: null,
function1 : function(){
this.function2(this.function3);
},
function2 : function(func){
func();
},
function3 : function(){
if(context == this){
Ext.Msg.alert('Fiddle', 'Same context!');
}
else {
Ext.Msg.alert('Fiddle', 'Different context!');
}
},
launch : function() {
context = this;
this.function1();
}
});
我正在尝试使用bind,但它无法正常工作。
谢谢!
编辑:我很抱歉,我说Javascript而不是Sencha。我认为Javascript中的问题是一样的,我可以得到更多的帮助。我道歉。我创建了一个代码来复制问题。感谢所有的评论和帮助,他们非常感谢!答案 0 :(得分:0)
您可以使用bind方法绑定您的上下文(this
)。
function1 : function(arg){
this.function2(this.function3.bind(this), arg) // using bind
},
function2 : function(func, arg){
func(arg); // <-- Issue
},
function3 : function(arg){
// this = window... I lost the scope??
},