我正在用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 point to its bind object
的新功能。为什么在申请事件处理程序后会得到不同的答案? 最佳答案
在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/