gpt4 book ai didi

javascript - 对闭包内创建的事件调用闭包函数

转载 作者:行者123 更新时间:2023-12-03 12:12:42 24 4
gpt4 key购买 nike

我正在尝试从闭包函数中创建一些选择标记,并将一个事件附加到它们,该事件调用闭包中的另一个函数。

这是我的代码的一个非常简化的版本:

var SomeClosure = function() {
this.build = function(){
var mydiv = document.getElementById('mydiv');
var newSelect = document.createElement('select');
newSelect.onchange = (function() {
var selfRef = this;
return function() {
selfRef.changeselection();
}
})();

mydiv.appendChild(newSelect);
};

this.changeselection = function(){
// do something
}
}

然而,我得到的只是“selfRef.changeselection 不是一个函数”。我哪里出错了?

我不需要传入select的值,直接调用函数即可。但是,如果我确实也需要传递它的值,我该怎么做?

最佳答案

将代码更改为:

var selfRef = this;
newSelect.onchange = (function() {
return function() {
selfRef.changeselection();
}
})();

立即函数内的上下文是Window,所以你会得到错误的引用。同样在这种情况下,如果这是 onchange 事件处理程序的所有代码,您可能根本不需要 IIFE。

关于javascript - 对闭包内创建的事件调用闭包函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24885455/

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