前端手寫系列 手寫簡易版深拷貝

2021-10-23 20:48:28 字數 479 閱讀 2068

深拷貝方式1:json.parse(json.stringify(obj)),這種方式有很多缺點,會忽略undefined, symbol, 函式, 不能解決迴圈引用的問題,不能處理正則,new date()

以下深拷貝只考慮了物件和陣列的情況,其餘諸如date, function, regexp都沒有考慮

// 簡易版深拷貝

function

deepclone

(target,

set=

newweakset()

);// 使用set解決迴圈引用的問題if(

set.

has(target)

)set

.add

(target)

;for

(let key in target)

return clonetarget;

}else

}

手寫簡易版Promise

在完成符合 promise a 規範的 之前,我們可以先來實現乙個簡易版promise,因為在面試中,如果你能實現出乙個簡易版的promise基本可以過關了。那麼我們先來搭建構建函式的大體框架 const pending pending const resolved resolved const r...

手寫JS深拷貝

原始碼 支援拷貝string number boolean null undefined object function array regexp date 環 class deepcloner clone source else else if source instanceof function...

前端手寫系列 手寫reduce函式

reduce函式常用於對陣列,reduce函式接受3個引數 被迭代的陣列 用於迭代計算的函式 迭代的初始值 注意點 如果沒有提供初始值時,會預設使用陣列的第乙個元素來作為初始值 function reduce arr,callback,initialval 如果沒有將initialval傳遞給該函式...