如何正確判斷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,以方法的形式呼叫...