箭头函数调用
Version >= 6
当使用箭头函数时,this
从封闭执行上下文的 this
中获取值(也就是说,箭头函数中的 this
具有词法范围而不是通常的动态范围)。在全局代码(不属于任何函数的代码)中,它将是全局对象。并且它保持这种方式,即使你从此处描述的任何其他方法调用使用箭头符号声明的函数。
var globalThis = this; //"window" in a browser, or "global" in Node.js
var foo = (() => this);
console.log(foo() === globalThis); //true
var obj = { name: "Foo" };
console.log(foo.call(obj) === globalThis); //true
了解 this
如何继承上下文,而不是引用调用该方法的对象。
var globalThis = this;
var obj = {
withoutArrow: function() {
return this;
},
withArrow: () => this
};
console.log(obj.withoutArrow() === obj); //true
console.log(obj.withArrow() === globalThis); //true
var fn = obj.withoutArrow; //no longer calling withoutArrow as a method
var fn2 = obj.withArrow;
console.log(fn() === globalThis); //true
console.log(fn2() === globalThis); //true