輝太郎看前端 手寫深拷貝遞迴

2021-10-11 02:58:54 字數 1205 閱讀 1448

建立乙個新的物件和陣列,將原物件的各項屬性的「值」(陣列的所有元素)拷貝過來,是「複製」而不是「引用」

注:該**只能夠傳物件和陣列,其他類不行。

一丶

const add=

, arr:

["a"

,"b"

,"c"]}

//遞迴函式

function

deepclone

(obj)

let result //初始化變數

//判斷是不是乙個陣列

if(obj instanceof

array

)else

}//迴圈obj

for(

let key in obj)

}//返回資料

return result

}//將add拷貝到obj1中

const obj1=

deepclone

(add)

console.

log(obj1.arr)

//列印結果 ["a","b","c"]

//給資料arr的第乙個值重新賦值

obj1.arr[0]

="d"

console.

log(obj1.arr)

//列印結果 ["d","b","c"]

console.

log(add.arr)

//列印結果 ["a","b","c"]

二丶
object.prototype.

clone

=function()

//建構函式中this指向呼叫它的物件

for(

var e in

this

)return a

}let arr =[1

,[,]

]//arr1轉殖arr

let arr1 = arr.

clone()

arr[1]

[1].name=

"輝太郎"

console.

log(arr, arr1)

列印結果

總結希望各位,路過的朋友,多多指教。

輝太郎看前端 js非同步巨集任務和微任務

前言巨集任務 settimeout,setinterval,ajax,dom事件 微任務 promise,async await。優先順序 微任務執行要比巨集任務要早。注 同步任務會和微任務按照出場順序先後執行,最後執行巨集任務。同步和非同步console.log 123 alert 阻塞 cons...

輝太郎看前端 移動端獨立開發專案前期配置

前言 移動端我們要用到多環境開發,axios,vant,rem。配置專案 在package.json裡的scripts中配置serve,stage,build,通過 mode 來執行不同環境。scripts 在根目錄新建三個檔案 node env development must start wit...

手寫前端 serialize

在jquery中,寫下我們很方便序列化我們的表單,比如說 window.onload function 但是jquery庫是沉重的,那麼如何手寫乙個呢?思想 首先無論如何你都要去遍歷form裡面的,每乙個元素如input text radio select checkbox,獲取到name,然後va...