this指向問題是個老生常談的問題了,現在我給大家乙個例子
var obj=}var foo=obj.foo;
foo(); // 0 "wahahah"
obj.foo(); // cynthia wahahah
雖然obj.foo和foo指向同乙個函式,但是執行結果卻不一樣。
造成這種差異的原因,就在於函式體內部使用了this關鍵字。很多教材裡面會告訴你,this指向的是其執行時所在的環境。但是光看這句話是不是有點懵
下面我把this的指向都列給大家
functionadd(x,y)
add(1,40);
在非嚴格模式下的時候,this的執行環境所在的環境是windows,所以返回的是window
functionadd(x,y)
add(1,40);
如果繫結了new的話,並且建構函式沒有返回function或object,那麼this指向這個新物件
functionperson(name,age)
}let person=new person("那抓",6);
person.sayhi();// 6
建構函式返回值是function或者object,返回的是建構函式返回的物件
functionsuper(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的最終指向的是那個呼叫它的物件 這句話有些問題,後面會解釋為什麼會有問題,雖然網上大部分的文章都是這樣說的,雖然在很多情況下那樣去理解不會出什麼問題,但是實際上那樣理解是不準確的...