桃花長相依
2022-07-25 18:14:25
<input type=button value=tijiaao onclick="a()"> function a(){b()} function b(){alert(this.value)}1這是一個javascript問題:在b函數里的alert(this.value)為什么彈出的是unfinished,而不是tijiao,還有a函數調用b()函數,b函數里的this指向誰,是window對象還是還是調用a函數的對象,為什么?
2 回答

小唯快跑啊
TA貢獻1863條經驗 獲得超2個贊
那個unfinished是undefined吧。
<onclick=“”> 這個雙引號里面的closure是誰我還真沒想過,不過我記得如果這么寫的話this是那個input <input ... onclick="alert(this)">,根據這樣,估計可以可以這么理解
button.onclick= function() {
a();
}
然后b里面的this是window
如果你這么寫a
function a() {
this.b();
}
那么b里面的this就是那個input了。
沒指定誰“點”b函數,就是windows.b()。
這是javascript里比較迷惑的地方,javascript并沒有明確的類的定義,用函數模擬類只不過是借用了其中閉包的概念。
不好意思,這里雖然我自己理解了,但是有些術語我也不知道怎么說。

LEATH
TA貢獻1936條經驗 獲得超7個贊
onclick="a()"相當于:
假設btn是input這個對象
btn.onclick=a;
當點擊的時候,實際上是掉用的btn.onclick(),所以這個函數調用是有this指針的,指向btn這個對象
在javascript里面直接調用一個函數的時候,就是前面沒有點,都認為this是window
添加回答
舉報
0/150
提交
取消