JS 基本
Debounce
在特定時間段內,多次呼叫該 function,僅會在計時結束後執行一次,如果還沒到計時器結束又呼叫,則重新執行計時
例如使用者在文字輸入中,等到沒輸入後才改變畫面狀態
Throttle
在特定時間段內,多次呼叫該 function,僅會每次間隔時間執行一次
例如使用者在輸入中,但每次固定間隔一段時間才會改變狀態
Call, Apply, Bind
call
, apply
和 bind
都是用來改變函式的 this
值的方法。
call()
方法:它允許您指定函式中的this
值以及一個參數列表。這些參數會作為個別的引數傳遞給函式。call()
方法的語法如下:apply()
方法:它也允許您指定函式中的this
值,但它的參數必須是一個數組(或類似數組的對象)。這個數組中的元素會作為引數傳遞給函式。apply()
方法的語法如下:bind()
方法:它會返回一個新的函式,其中this
值被綁定到指定的對象。bind()
方法的語法如下:這個方法會創建一個新函式,其中
this
值被綁定到thisArg
,而arg1
,arg2
, ... 這些參數則被作為該函式的引數。綁定後的函式可以稍後調用,並且this
值將保持綁定的對象。
call()
和 apply()
的作用是改變函式的 this
值並立即調用函式,而 bind()
的作用是創建一個新的函式,並將 this
值綁定到指定的對象上。
深拷貝、淺拷貝
淺拷貝(Shallow Copy)是指在複製一個對象時,新對象只會複製原始對象中的基本數據類型和一級屬性的引用。也就是說,新對象和原始對象中的一級屬性(如字符串、數字、布林等)會共享同一個引用。如果修改了其中一個對象中的屬性,另一個對象中的屬性也會隨之改變。
深拷貝(Deep Copy)是指在複製一個對象時,新對象會複製原始對象中的所有數據,包括所有層級的嵌套對象和數組。也就是說,新對象和原始對象中的所有屬性都是獨立的,不會相互影響。
Last updated