gpt4 book ai didi

javascript - 如果我传递 "this"中的函数,监听器将不起作用

转载 作者:行者123 更新时间:2023-11-28 19:58:10 25 4
gpt4 key购买 nike

我遇到了非常奇怪的行为:

此代码抛出“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();

这怎么可能?在我看来这两段代码是完全一样的。

最佳答案

它们不一样。区别在于 this 被求值的时间。在第一种情况下,在进行声明时,this 将指向任何 this 指针,因为需要先评估整个右侧,然后才能创建窗口对象。在第二种情况下,它被推迟到回调执行为止。对于 close 事件,this 指针默认为窗口对象。

关于javascript - 如果我传递 "this"中的函数,监听器将不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22130197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com