两个绑定使用之间的差异

时间:2017-06-23 10:27:45

标签: javascript

我在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的新函数。为什么我在申请事件处理程序后会得到不同的答案?

2 个答案:

答案 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方法。

再次感谢!

相关问题