this 的理解

function foo(num){
console.log("foo:",+num);
this.count++
}
foo.count =0
for (var i=0; i<10;i++){
if (i>5){
foo(i);
}
}
console.log(foo.count)
在非嚴格模式下 foo.count應該最後輸出的是0,和咱們想象的不同,固然在嚴格模式下this.count 報錯
爲何呢?foo函數中的this的count 和 foo.count不是同一個值?
接下來我直接console.log(count),結果出現了NaN,哦,原來count是全局的,對了,這就是前面說的this是在運行的時候進行綁定的,並非在編寫的時候進行綁定的,
它取決於上下文調用的各類條件,this 的綁定和函數聲明的位置沒有任何關係,只取決於函數的調用方式。
當一個函數被調用時,會建立一個活動記錄,這個紀錄會包含函數在哪裏被調用,函數的調用方法,傳入的參數等信息,this 就是紀錄其中的一個屬性,在哪裏被調用也就是取決於函數的執行過程,this 其實是在函數調用時發生的綁定,它指向什麼徹底取決於函數在哪裏被調用
相關文章
相關標籤/搜索