首先 在類中的方法中,this 要看是誰呼叫的,如果是實體呼叫的,那么這個this就是這個實體,如:
class Student { constructor(flag) { this.flag = flag } mark(){ console.log(this); } } const s1 = new Student('jack') s1.mark()
結果:

如果不是實體呼叫的,類中的方法默認會開啟嚴格模式,this會變成undefined,不開啟嚴格模式,this是Window,
class Student { constructor(flag) { this.flag = flag } mark(){ console.log(this); } } const s1 = new Student('jack') const out = s1.mark out()
結果:

可以通過bind方法來系結,首先看一下這個方法
class Student { constructor(flag) { this.flag = flag } mark(){ console.log(this); } } const s1 = new Student('jack') const out = s1.mark out() const x = s1.mark.bind(s1); x();
研究了好久也沒有理解這個方法的含義,其實這個要從后往前看,首先分為是誰來呼叫(X),入參是什么(Y),回傳的是什么(Z),
根據定義我們可以知道回傳的是一個函式/方法(即Z是一個函式),
這個bind其實就是把一個物件(Y)的一個方法(X)提取出來(Z)最后是一個方法
所以這里就是把 Student物件實體變數s1 的mark方法 系結到變數x里,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522975.html
標籤:其他
