关于settimeout中的this指向解决办法

1.var that = this;(最简单,最省力)

this.getNumLater = function(){
        setTimeout(function(){
            console.log(that.num);    //利用闭包访问that,that是一个指向obj的指针
        }, 1000)
    }

2.bind()方法(这里是创建了一个新函数,并将第一个参数作为新函数运行时的this)

this.getNumLater = function(){
        setTimeout(function(){
            console.log(this.num);
        }.bind(this), 1000)    //利用bind()将this绑定到这个函数上
    }

3.箭头函数(ES6中的箭头函数完全修复了this的指向,this总是指向词法作用域,也就是外层调用者obj)

    this.getNumLater = function(){
        setTimeout(() => {
            console.log(this.num);
        }, 1000)    //箭头函数中的this总是指向外层调用者,也就是Obj
    }

原文链接Little Zhang关于setInterval和setTImeout中的this指向问题

posted @ 2020-12-13 18:41  打工人001  阅读(513)  评论(0编辑  收藏  举报