gpt4 book ai didi

javascript - 两种绑定(bind)用法之间的区别

转载 作者:行者123 更新时间:2023-11-29 21:04:30 25 4
gpt4 key购买 nike

我在 javascript 中练习 bind 并遇到一个问题。

var test = {
val: 1
}
function bindTest () {
console.log(this.val)
}
bindTest.bind(test)()

在这个小演示中,我得到 1 作为结果,因为它应该返回。

但是,当我尝试在事件处理程序上使用绑定(bind)时,绑定(bind)将不起作用。例如

var container = document.querySelector('.container'),
test = {val: 1}
function bindTest (event) {
console.log(this.val)
}
container.addEventListener('click', bindTest.bind(test))

在这种情况下,bindTest 中的this 变成了window。我知道 bind 用于创建一个新函数,this 指向它的绑定(bind)对象。为什么我在申请事件处理程序后得到不同的答案?

最佳答案

在bindTest.bind(test)之后添加括号

var container = document.querySelector('.container'),
test = {val: 1}
function bindTest () {
console.log(this.val)
}
container.addEventListener('click', bindTest.bind(test)())

两种情况我们都会得到答案1。

关于javascript - 两种绑定(bind)用法之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44719164/

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