1 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
這其實(shí)沒什么復(fù)雜的。
ES5中this的真諦在于——?jiǎng)討B(tài)綁定上下文(context)對象。
也就是說, 跟函數(shù)的定義是沒有任何關(guān)系的,只跟他運(yùn)行時(shí)的狀態(tài)有關(guān)。
你的問題中, getFullName這個(gè)變量是一個(gè)函數(shù),又是prop對象的屬性。這是對于這個(gè)問題來說我們最需要關(guān)注的兩個(gè)點(diǎn)。至于前邊那一連串調(diào)用,不過是為了得到pro對象而已。
getFullName函數(shù)第一次調(diào)用,是被prop對象,那this肯定就是prop無疑啦。
第二次調(diào)用,是它被賦值給了test變量,test變量是個(gè)全局變量, 實(shí)際可以看做是window對象的屬性(但不全等)。 這樣,就相當(dāng)于是window.test().那他的this肯定就是window了。
如果說了這么多你還不懂,那你那句‘本以為’的確是挺‘本以為的’。不過要是不懂,說一聲兒我還是會(huì)繼續(xù)補(bǔ)充的, 直到你一點(diǎn)兒疑惑都沒有。
添加回答
舉報(bào)