上一段简单的js代码,
<script type="text/javascript">
var item = {
state: "this is state",
call: function () {
setInterval(function () {
console.log(this.state)
}, 1000)
}
}
item.call();
</script>
上面的代码从控制台中打印的结果是undefined,也就是上面的this.state中this的作用域是window,所以this.state当然就找不到了。
改一下代码,在调用的函数后面加入.bind(this),这样函数里面的this的作用域就变成bind绑定this的上下文了。
<script type="text/javascript">
var item = {
state: "this is state",
call: function () {
setInterval(function () {
console.log(this.state)
}.bind(this), 1000)
}
}
item.call();
</script>