前言

javascript中的函数的this指针指向一直是一个比较难搞懂得一点,最近也遇到了,正好借此总结一下。

this指针

调用方式示例函数中的this指向
通过new调用new method()新对象
直接调用method全局对象
通过对象调用obj.method()前面的对象
call,apply,bindmethod.call(obj)第一个参数
const obj = {
    a:1,
    method:function(){
        console.log(this.a);
    }
};

const method =obj.method;

new method();
// undefined
obj.method();
// 1
method();
// undefined
method.call(obj);
// 1

箭头函数

箭头函数中的this指针和正常的函数的this指针有些略有不同:

箭头函数不创建独立的this上下文,其内部的this直接继承自定义时所在的外层作用域(词法作用域)。

且不可通过call,apply,bind更改this指向。

const obj = {
    a:1,
    method:()=>{
        console.log(this.a);
    }
};

obj.method();
// undefined