這是箭頭函式
這在功能上是指用於呼叫該函式的例項物件,但此在箭頭函式等於這其中箭頭函式定義的函式。
讓我們理解使用圖表 https://i.stack.imgur.com/iRsl1.jpg
瞭解使用示例。
var normalFn = function(){
console.log(this) // refers to global/window object.
}
var arrowFn = () => console.log(this); // refers to window or global object as function is defined in scope of global/window object
var service = {
constructorFn : function(){
console.log(this); // refers to service as service object used to call method.
var nestedFn = function(){
console.log(this); // refers window or global object because no instance object was used to call this method.
}
nestedFn();
},
arrowFn : function(){
console.log(this); // refers to service as service object was used to call method.
let fn = () => console.log(this); // refers to service object as arrow function defined in function which is called using instance object.
fn();
}
}
// calling defined functions
constructorFn();
arrowFn();
service.constructorFn();
service.arrowFn();
在箭頭函式中,這是詞法範圍,它是定義箭頭函式的函式範圍。
第一個例子是定義函式的傳統方式,因此,它指的是全域性/視窗物件。
在第二個示例中,這用於箭頭函式內部,因此這指的是定義它的範圍(即視窗或全域性物件)。在第三個示例中,這是服務物件,因為服務物件用於呼叫函式。
在第四個例子中,箭頭函式是從範圍為 service 的函式定義和呼叫的,因此它列印服務物件。
注意: - 全域性物件在 Node.Js 中列印,windows 物件在瀏覽器中列印。