gpt4 book ai didi

javascript - 使用绑定(bind)后出现意外的值

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

我真的不明白为什么在 foreach(console.log 打印的地方)中它变成了 Window 对象。提前致谢。

代码检测悬停事件,然后读取范围 slider 值。

HTML,

<input type="range" min="0" max="255" step="1" value="10" id="rangeR">

JS,

var ColorDispatcher = function() {
this.rgbColorArray=new Array(0,0,0);
};

ColorDispatcher.prototype = {
hoverHandler:function () {
var SliderArray=new Array(document.getElementById("rangeR"));
SliderArray.forEach(function sliderHandler(element, index, array){
console.log(this);
element.addEventListener("change", function() {
if(index==0){//R
this.rgbColorArray[0]=element.value;
}
});

});


},

};
var dispatcher = new ColorDispatcher();
document.body.addEventListener('mouseover',dispatcher.hoverHandler.bind(dispatcher));

最佳答案

bind 为调用它的函数设置 this 的值。当您调用 dispatcher.hoverHandler 时,this 就是 dispatcher

这一行:

console.log(this);

...不是 dispatcher.hoverHandler

的一部分

它是您传递给 SliderArray.forEach 的 sliderHandler 函数的一部分。

如果您想传递不同的 this 值,那么您应该使用 forEachsecond 参数(在函数之后)来实现.

关于javascript - 使用绑定(bind)后出现意外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42156627/

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