this绑定

JS中的this可以简单理解为:谁调用我,this就是谁。
ES6箭头函数的this略微不同:this指向离该箭头函数最近的父级声明式函数,即:ES5:function func(){...} 或 ES6:func(){...}

异步函数中的声明式函数想要提升 this的指向,可以对函数进行this绑定。
做法是直接在函数的花括号后面添加bind(this)

1、箭头函数的this

下面例子中的函数bbsetTimeout箭头函数里的this实际上是函数bb的this,而它是指向对象a的,因此不需要bind就能直接调用aa方法。

2、this绑定

下面例子中的函数cc,我们在setTimeout中为匿名函数添加了bind(this),此时这个this是函数ccthis,而这个this实际上是指向对象a的,因此就可以在匿名函数中调用aa方法了。

/**
 * 用 setTimeout模拟异步函数中的this的问题。
 */
const a = {
    aa(){
        console.log(111);
    },
    bb(){
        setTimeout(() => {
            this.aa();
        }, 1000);
    },
    cc(){
        /**
         * 声明式函数需要进行this绑定,直接跟在函数的花括号后即可。
         */
        setTimeout(function(){
            this.aa();
        }.bind(this), 1000);
    }
}
// a.bb();
a.cc();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容