詳解js中的this指向

2022-07-13 14:30:16 字數 1141 閱讀 9403

this指向問題是個老生常談的問題了,現在我給大家乙個例子

var obj=

}var foo=obj.foo;

foo(); // 0 "wahahah"

obj.foo(); // cynthia wahahah

雖然obj.foo和foo指向同乙個函式,但是執行結果卻不一樣。

造成這種差異的原因,就在於函式體內部使用了this關鍵字。很多教材裡面會告訴你,this指向的是其執行時所在的環境。但是光看這句話是不是有點懵

下面我把this的指向都列給大家

function

add(x,y)

add(1,40);

在非嚴格模式下的時候,this的執行環境所在的環境是windows,所以返回的是window

function

add(x,y)

add(1,40);

如果繫結了new的話,並且建構函式沒有返回function或object,那麼this指向這個新物件

function

person(name,age)

}let person=new person("那抓",6);

person.sayhi();// 6

建構函式返回值是function或者object,返回的是建構函式返回的物件

function

super(age);

return

obj;

}let instance=new super(30);

console.log(instance);//

console.log(instance.age);// undefined

箭頭函式沒有自己的this,繼承外層上下文繫結的this

let obj=

}}let person=;

let info=obj.info();

info();

//指向的是obj

let info2=obj.info.call(person);

info2();

node環境中無論是否在嚴格模式下,在全域性執行環境中(在任何函式體外部)this都指向空物件{}

js中this的指向

lang en charset utf 8 深入理解thistitle head 它代表函式執行時,自動生成的乙個內部物件,只能在函式內部使用。隨著函式使用場合的不同,this的值會發生變化。但是有乙個總的原則,那就是this指的是,呼叫函式的那個物件。demo1 function demo1 呼叫...

js中this的指向

this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件 functiona a 按照我們上面說的this最終指向的是呼叫它的物件,這裡的函式a實際是被window物件所點出來的,下面的 就可以證明。var o o.fn ...

js中的this指向

首先必須要說的是,this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件 這句話有些問題,後面會解釋為什麼會有問題,雖然網上大部分的文章都是這樣說的,雖然在很多情況下那樣去理解不會出什麼問題,但是實際上那樣理解是不準確的...