普通函数和箭头函数的 this 有什么区别?
从调用方式与词法绑定解释 this,而不是只记规则。
参考答案
普通函数的 this 通常由调用方式决定:obj.fn() 指向 obj;call、apply 或 bind 可以指定接收者。严格模式下独立调用函数时,this 是 undefined。
箭头函数没有自己的 this,它从外层词法作用域取得 this,不能通过 call、apply、bind 改变这个绑定,也不能作为构造函数使用。
JavaScript
const obj = {
value: 42,
read() { return this.value; }
};
obj.read(); // 输出:42
把方法赋给变量后独立调用,会丢失原来的方法调用接收者。需要保留接收者时,可使用 bind 或包装函数。