箭頭函式this指向問題

2021-09-26 23:45:12 字數 1118 閱讀 6299

前言:

線下筆試碰到的題目,發現學習掌握的不透徹,所以回來填坑

const obj1 =

}const obj2 =

console.

log(obj1.func.

bind

(obj2)()

);

輸出結果為:

剛開始很疑惑結果,於是做了個對比

const obj1 =

}const obj2 =

console.

log(obj1.func.

bind

(obj2)()

);

輸出結果為

箭頭函式中this指向當前所處物件環境,

箭頭函式形成區域性作用域,所以this指向window

window下沒有屬性a,結果是undefined

bind()方法建立乙個新的函式,在bind()被呼叫時,這個新函式的this被bind的第乙個引數指定,其餘的引數將作為新函式的引數供呼叫時使用。

var module =

}var unboundgetx = module.getx;

console.

log(

unboundgetx()

);// the function gets invoked at the global scope

// 函式在全域性範圍內被呼叫

// expected output: undefined

var boundgetx = unboundgetx.

bind

(module)

;console.

log(

boundgetx()

);// expected output: 42

箭頭函式 this指向問題

1.為什麼要用箭頭函式 2.箭頭函式分析this指向 1.this指向呼叫函式的物件 function a a 2.this指向window var a 2 這裡不能換成let a 2 因為window.獲取不到a的值 var obj obj.b 總結 1.箭頭函式在定義的時候生效 而普通函式則在呼...

箭頭函式this指向問題

箭頭函式表示式的語法比函式表示式更簡潔,並且沒有自己的this arguments super new.target。箭頭函式表示式更適用於那些本來需要匿名函式的地方,並且它不能用作建構函式。箭頭函式的this指向的是箭頭函式所在作用域的this指向 向來看一下這個物件,我在外部定義了乙個全域性變數...

箭頭函式中的this指向問題

箭頭函式沒有自己的 this,它內部的 this 是外層 塊的 this,也就是定義箭頭函式時所在的物件。es6 標準入門裡面對箭頭函式 this 的指向有如下說法 函式體內的 this 物件就是定義時所在的物件,而不是呼叫時所在的物件。一般this 物件的指向是可變的,但是在箭頭函式中,this ...