this指向的簡單理解

2021-09-26 18:34:22 字數 1071 閱讀 4880

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 ...