猿问

作为对象方法调用为什么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


慕尼黑8549860
浏览 754回答 1
1回答

泛舟湖上清波郎朗

this 的动态绑定setInterval(pigPlayer.render,1000)类似var anonymous = pigPlayer.render // 只是简单的函数复制 anonymous 的 this 是指向 全局变量的setInterval(anonymous,1000)要有预期的结果可以考虑用 bindfunction Pig() { } Pig.prototype = {    init: function () {     },    move: function () {     },    render: function () {        this.move();        console.log(this)     } };var pigPlayer=new Pig(); setInterval(pigPlayer.render.bind(pigPlayer),1000);
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答