我在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
的新函数。为什么我在申请事件处理程序后会得到不同的答案?
答案 0 :(得分:1)
在bindTest.bind(test)之后添加括号
var container = document.querySelector('.container'),
test = {val: 1}
function bindTest () {
console.log(this.val)
}
container.addEventListener('click', bindTest.bind(test)())
这两种情况我们都会得到答案1.
答案 1 :(得分:0)
很抱歉浪费你的时间来查看这个愚蠢的问题。我不知道我做了什么,我的代码现在正常工作。我需要调试才能找到原因。
所以结论是你可以在这个场景中使用bind
方法。
再次感谢!