箭頭函式呼叫
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