javascript - 作为对象方法调用为什么this指向了window?

查看:122
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆