javascript - 作为对象方法调用为什么this指向了window?
本文介绍了javascript - 作为对象方法调用为什么this指向了window?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
function Pig() {};
Pig.prototype={
init:function () {};
move:function () {};
render:function(){
this.move();
console.log(this)
......
}:
}
var pigPlayer=new Pig();
setInterval(pigPlayer.render,1000)
大概结构是这样的
调用move报错
然后打印出this=window
解决方案
this
的动态绑定
setInterval(pigPlayer.render,1000)
类似
var anonymous = pigPlayer.render
// 只是简单的函数复制 anonymous 的 this 是指向 全局变量的
setInterval(anonymous,1000)
要有预期的结果可以考虑用 bind
function Pig() {
}
Pig.prototype = {
init: function () {
},
move: function () {
},
render: function () {
this.move();
console.log(this)
}
};
var pigPlayer=new Pig();
setInterval(pigPlayer.render.bind(pigPlayer),1000);
这篇关于javascript - 作为对象方法调用为什么this指向了window?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文