this的指向問題

2022-07-04 11:33:08 字數 1646 閱讀 7618

宣告:本文**「追夢子」大大的文章《徹底理解js中this的指向,不必硬背。

》偶遇此文自我總結一下,受益良多

例1:

function a()

a();

//注意函式是在什麼作用域中呼叫的

//這個函式實在全域性作用域中呼叫所以this指向的是window 全域性中沒有user所以是undefineds

例2:var o =

}o.fn();

//這個函式是通過o.fn()點出來的,所以的指向的是o 強調一點:函式在建立的時候無法確定this的指向,誰呼叫這個函式this就指向誰

例3:var o =

}}o.b.fn()

1.如果乙個函式中有this,如果它沒有被上一級物件所呼叫,那麼這個this指向window

2.如果乙個函式中有this,且被它的上一級物件呼叫,此時這個this指向它的上一級物件

3.如果乙個函式中有this 這個函式中包含多個物件,儘管這個函式是被最外層的物件所呼叫,this指向也只是它的上一級物件

注意:

var o =

}}var j =o.b.fn;

j();

//注意這個例項

在這裡fn只是賦值給j並沒有呼叫,然後j在全域性作用域下呼叫,所以這個this指向的是window

function fn()

var a = new

fn();

console.log(a.user);

//追夢子

//這裡面的this通過this改變了this指向

function fn()  

; }

var a = new

fn;

console.log(a.user);

//undefined

----------------------------------------function fn() ;}

var a = new

fn;

console.log(a.user);

//undefined

----------------------------------------function fn()

var a = new

fn;

console.log(a.user);

//追夢子

-------------------------------------------function fn()

var a = new

fn;

console.log(a.user);

//追夢子

------------------------------------------總結:如果返回值是乙個物件,那麼this指向的就是那個返回的物件 如果返回值不是乙個物件那麼this還是指向函式的例項

注意:null也是物件但是這裡的this還是指向那個函式的例項

function fn()  

var a = new

fn;

console.log(a.user);

//追夢子

this的指向問題

對於js基礎不是很好的我,一直不太懂this的指向問題。要搞懂這個還是得多動手。首先,我們知道 1.函式被呼叫時可以確定該函式內this的指向。因為函式中的this和arguments時兩個特殊的變數,在函式被呼叫時才會取得他們,而搜尋著兩個變數時只會在活動變數中找。2.確定函式被呼叫的位置,從而確...

this的指向問題

function foo var a 1 foo const obj obj.foo const c new foo function a console.log a 箭頭函式是沒有this的,箭頭函式中的this只取決包裹箭頭函式的第乙個普通函式的this。在這個例子中,因為包裹箭頭函式的第乙個普...

this的指向問題

this 的指向問題 第一種 指向呼叫者 function a a 每乙個函式前面都會隱式的呼叫window,所以相當於window.a var a a.fn a呼叫了fn 所以this指向的是a 在舉個特殊的例子作對比 var a var j a.fn j 在這裡this永遠指向他的呼叫者,但這裡...