判斷this指向

2021-09-15 03:08:54 字數 1457 閱讀 6861

如何正確判斷this

function

foo(

)var a =

1// 1

foo(

)//1

const obj =

//2obj.

foo(

)//2

//3const c =

newfoo()

//undefined

解析:直接呼叫函式foo(),不管函式被放在了什麼地方,this指向都是window;

對於obj.foo(),誰呼叫了函式,誰就是this,所以此地this是指代obj。

對於 new 操作來說,this被繫結在了new的元素上面也就是c上面,而不會被任何方式改變。

箭頭函式中的 this

functiona(

)}}console.

log(a(

)()(

))//window

解析:箭頭函式是沒有this的。

箭頭函式的this只取決於包裹箭頭函式的第乙個普通函式的this,此次是函式a,所以this指向window。

var obj =

, b:()

=>

, c:

, c2:()

=>}}

obj.a(

);//obj

obj.b(

);//window

obj.c.c1(

);//c obj.c.c2(

);//window

bind中的this

this取決於第乙個引數,如果第乙個引數為空,那麼就是window。

let a =

letfn

=function()

fn.bind()

.bind

(a)(

)// window 第乙個bind為window

fn.bind

(a).

bind()

()// {} 第乙個bind為a

不管我們給函式bind幾次,fn中的this永遠由第一次bind決定this 規則

首先,new的方式優先順序最高,接下來是bind這些函式,然後是obj.foo()這種呼叫方式,最後是foo這種呼叫方式,同時,箭頭函式的this一旦被繫結,就不會再被任何方式所改變

如何判斷THIS指向?

什麼是this?this是用來做什麼的?這是首先我們必須知道的 this它是js的乙個關鍵字,用來指向某乙個物件 如何判斷this指向?函式 方法 內 一種以函式的方式呼叫 不帶.this指向window 一種以方法的形式呼叫 函式名前面帶.this指向點前面的 函式 方法 外,this指向wind...

如何判斷this指向?

什麼是this?this是用來做什麼的?這是首先我們必須知道的 this它是js的乙個關鍵字,用來指向某乙個物件 如何判斷this指向?函式 方法 內 一種以函式的方式呼叫 不帶.this指向window 一種以方法的形式呼叫 函式名前面帶.this指向點前面的 函式 方法 外,this指向wind...

2020 4 22 this指向判斷(待補充)

解析器在呼叫函式每次都會向函式內部傳遞進乙個隱含的引數 這個隱含的引數就是this,this指向的是乙個物件 這個物件我們稱為函式執行的上下文物件 根據函式的呼叫方式不同,this會指向不同的物件一般情況下 判斷方法 待補充 1,以函式的形式呼叫時,this永遠都是window 2,以方法的形式呼叫...