跟著大佬學習之js的this指向原創 | gooddeep【我一直傻傻分不清楚,今天和大家一起披關斬棘】
首先總結下在不同函式間this的區別:
1.普通函式下的this:
2.箭頭函式中的this:
上**:
普通函式中的this
functiona(
)a()
因為a是乙個全域性的函式,也就是掛載在window物件下的, 所以a(),等價於window.a()
var obj=)}
}obj.
say(
)
因為定時器的函式,沒有預設的宿主物件,所以指向window
//嚴格模式下的this
function
test()
test
()
嚴格模式下,函式沒有直接的呼叫者,this的指向是undefined
'use strict'
var obj=
}obj.
say(
)
嚴格模式下,有直接呼叫者的函式this是obj箭頭函式中的this
var obj=)}
}
此時定時器的this繼承obj,指的是定義它的物件obj
var obj =)}
f1()}
}obj.
say(
)//f1呼叫的時候,沒有宿主物件,所以指向window物件
箭頭函式使settimeout裡面的this,繫結的是定義時所在的作用域,而不是指向執行的作用域相當於window.settimeout(()=>{})
var obj=)}
f1()}
}obj.
say(
)
因為f1定義時所處的函式中的this指的是obj(箭頭函式繫結this指向的是宿主物件)而settimeout中的箭頭函式this繼承f1,不管多少層繼承,都是obj
JS學習筆記 之 try catch
try catch e finally 處理流程 a.正常執行try內的 b.遇到錯誤,停止執行後續try內的 並跳轉到catch部分,同時將錯誤資訊封裝到error物件中傳入catch i.執行catch部分 可利用傳入的error物件,列印錯誤資訊 通過try catch 捕捉到的錯誤資訊不會丟...
js學習筆記之正則
是為了提取匹配的字串。表示式中有幾個 就有幾個相應的匹配字串。s 表示連續空格的字串。是定義匹配的字元範圍。比如 a za z0 9 表示相應位置的字元要匹配英文本元和數字。s 表示空格或者 號。一般用來表示匹配的長度,比如 s 表示匹配三個空格,s表示匹配一到三個空格。0 9 a z a z 包含...
JS高階程式設計學習筆記之JS事件(1)
事件流 冒泡定義 事件開始時由最具體的元素接收,然後逐級上傳到較為不具體的節點。ie9 ff chrome safari會將事件一直冒泡到window物件。ie5.5及其以下會跳過元素,直接從body跳到document 若發生事件的節點元素並沒有繫結該事件,則這個動作會向上冒泡,直到被執行,一直冒...