js中this指向的總結

2021-09-12 20:31:12 字數 966 閱讀 9692

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 呼叫...