js中的this指向問題可謂是老生常談。我這樣的初學者大多數會認為很繞。本篇部落格會把this指向問題按照權重進行分級,並指出一些經常出問題的情景。
這一級就是所謂的沒有呼叫,this指向window。
如下:
function test ()
test();
其實這個可以理解為,因為全域性的函式,呼叫時其實可以理解為window呼叫。
console.log(window.test === test) //true
而這個預設繫結的this指向還有一點,那就是沒有明確呼叫的,this也是window。
function func ()
test()
}func();
這個test函式雖然沒有被定義在全域性,但執行時沒有明確定義this,那麼this就是window。
容易出問題的情景
這種函式套函式的this指向問題,容易出在函式作為引數,或者物件上定義的函式之中的函式。具體來說,setinterval,array.foreach等。同學們可以試試手寫foreach,就發現問題的根源就是我上面說的預設this指向。而es6箭頭函式,就解決了這個問題,還順便解決了一下arguments**現的類似問題。
這個其實不用贅述了,某函式被呼叫時,誰呼叫的函式,this就指向誰。但是要注意上面說的,呼叫的函式內部如果還有函式,那麼這個內部的函式中的this,大家要注意了。
function.prototype.fakebind = function (_this)
}
需要注意的情景
那麼暫時我還真沒想起來。。。哪個工程師為什麼要先bind再call乙個函式。。。
new乙個建構函式的時候,乙個函式裡的this就是那個空物件,搞什麼都不管用,就是那個空物件。
js中this指向總結
昨天,剛看了這部分內容,怕自己以後會忘記,所以這裡做乙個總結,也再次重溫一遍知識點。this指向,this指呼叫當前方法 屬性 的物件,這裡重點是首先要呼叫,後面才是物件,所以在js中 這算是簡單的理解,也和全域性變數區域性變數的感覺差不多 後期較為複雜的有用this或者that作為引數傳參,然後達...
總結js中this的指向問題
var a 1 就相當於window.a 1function demo1 function demo2 return demo3 demo1 呼叫demo1函式,這裡this很顯然指向window var a demo2 a 這裡看到會列印出3,應該也很好理解,a變數將demo2函式執行後的的返回值...
js中this的指向
lang en charset utf 8 深入理解thistitle head 它代表函式執行時,自動生成的乙個內部物件,只能在函式內部使用。隨著函式使用場合的不同,this的值會發生變化。但是有乙個總的原則,那就是this指的是,呼叫函式的那個物件。demo1 function demo1 呼叫...