this
本身含義:執行上下文(只能是物件 不是物件強行轉換成物件)
this一般存在於函式中,表示當前函式的執行上下文,如果函式沒有被執行,那麼this沒有內容,只有函式在執行後this才有繫結。
函式執行的位置:
1、預設執行:
(自己執行自己)fn() (預設情況下的隱式執行) this指向window (嚴格模式下指向undefined,不指向)window
var arr = [1,2,3];
function fn()
fn();
2、通過物件執行:
(通過上下文物件執行,隱式執行,會發生隱式丟失):obj.fn()
3、顯示執行:
(函式的方法執行)
//eg
function fn()
var a = 10;
var obj =
obj.b();// 返回值20;this指向的是fn引用的位址
//fn作為乙個函式本身是乙個物件,在記憶體中所佔據的空間依然是乙個位址,
//在用obj.b(),執行這個函式時執行的是乙個引用,函式本身就是乙個引用,
//當把fn複製給obj中的b時,複製的是乙個引用位址=》淺拷貝,當我早使用obj.b()
//執行函式,用obj找到那個引用位置,這個時候,函式引用的位置被obj所找到,被obj
//執行,那麼此時函式裡的this就指向找到我位置的那個物件,也就是fn被哪個物件所
//執行,此時,fn就指向誰
this指向是呼叫當前函式的直接物件
顯示執行:
(通過函式的方法執行)
指定的是誰this就指向誰,後天強制的,可以解決隱式丟失,找回丟失的this,使用顯示執行強行繫結
//eg
function fn()
f(); //此時就是window
建構函式執行 》
總結:誰執行了this所在的函式,this就是誰(重點)
(後天操作,就是改變了this的指向)
this指向理解
首先必須要說的是,this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件 例子1 functiona a 按照我們上面說的this最終指向的是呼叫它的物件,這裡的函式a實際是被window物件所點出來的,下面的 就可以證...
this指向自己理解的
關於this,總結起來,主要有以下幾個途徑能夠被運用到。1 物件方法中呼叫this 如果函式被當中物件的乙個方法進行呼叫,則this值指向該物件。var person person.sayname this person,alert welcome alice 在這裡,函式的this指向該物件 即 ...
關於js this指向的理解
var obj add1 function a var f v v this.count return f.call b,a add2 function a var f function v return f.call b,a console.log obj.add 1 2 console.log ...