解析器在呼叫函式的時候,每次都會向函式內部傳遞乙個隱含引數,這個引數就是this,this指向的是乙個物件,這個物件我們稱為函式執行的上下文物件,根據函式呼叫方式的不同,this的指向不同
1.以函式形式呼叫,this永遠指向的是window,屬於預設繫結
2.以方法形式呼叫,this指向的是呼叫方法的那個物件,屬於隱式繫結
4.new繫結,this指向例項物件
5.箭頭函式的this,指向外層作用域
如下圖:
一:
function二:a()
a();
function三:方法呼叫fn ()
var b = new
fn; console.log(b.name)
//齊天大聖
var c =四:多層呼叫,指向的是最終呼叫者}//c呼叫
c.fn() //
var c =}}五:賦值//最終呼叫者是b
c.b.fn()
var c =}}六:當this遇上 return//將fn賦值給了d,最終呼叫者是d
var d =c.b.fn
d();
functionfn() ;
}var e = new
fn; console.log(e.user);
//undefined
console.log(e) //
{}
functionfn()
var f = new
fn; console.log(f.user);
//undefined
console.log(f) //
fn
function總結:如果返回值是乙個物件,那麼this指向的就是那個返回的物件,如果返回值不是乙個物件那麼this還是指向函式的例項。還有一點就是雖然null也是物件,但是在這裡this還是指向那個函式的例項,因為null比較特殊。fn() ;
}var g = new
fn; console.log(g.user);
//undefined
console.log(g) //
ƒ () {}
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的最終指向的是那個呼叫它的物件 這句話有些問題,後面會解釋為什麼會有問題,雖然網上大部分的文章都是這樣說的,雖然在很多情況下那樣去理解不會出什麼問題,但是實際上那樣理解是不準確的...