我遇到了非常奇怪的行为:
此代码抛出“TypeError:无法读取未定义的属性'fn':
Ext.create('Ext.window.Window', {
listeners: {
close: this.processClose
},
processClose: function() {
alert('processed');
}
}).show();
但这可以正常使用
Ext.create('Ext.window.Window', {
listeners: {
close: function() {
this.processClose();
}
},
processClose: function() {
alert('processed');
}
}).show();
怎么可能?在我看来,这两段代码是完全相同的。
答案 0 :(得分:3)
他们不一样。差异是评估this
的时间。在第一种情况下,this
将指向发出声明时this
指针的任何内容,因为在创建窗口对象之前需要对整个右侧进行求值。在第二种情况下,它会延迟到回调执行。对于close
事件,this
指针默认为窗口对象。