iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
Modern Web

YDKJS 一邊讀 You Don't Know JS Yet 一邊卡關一邊弄懂的日子 ԅ(≖‿≖ԅ)系列 第 3

Day03 - this&Object Prototypes Ch3 Objects - Contents - Duplicating Objects

Ch3 Objects - Contents - Duplicating Objects
作者說明 Objects 的複製有分兩種

  1. Deep copy
    由於我們可以在 Objects 裡設定不同 type 的 value,當我們想複製一個 Objects 時,若要確保 type 為 by reference (像 function、array 等 object 的子型態) 的 value 也被完整複製(而不是只複製他們的 reference 地址)這就需要使用 Deep copy ,目前有許多可以做到 Deep copy 的作法,而沒有所謂的標準的 Deep copy 方法

而如果我們確定我們的 Object 是 JSON-safe 的話,我們則可以利用 JSON.parse(JSON.stringify(myObj))做 Deep copy

var myObj = {
    a: 'ha',
    b: {
        food: 'Juice Lemon'
    },
}

var newObj = JSON.parse(JSON.stringify(myObj))

參考 djD-REK/JSON.parse() followed by JSON.stringify() as a deep copy.js 認識誰是 JSON-safe 的


  1. shallow copy
    反之,如果我們只需要複製到 reference 即可,則可以使用 ES6 的 Object.assign(),他會 return 我們需要的淺拷貝結果
var newObj = Object.assign({}, myObj)

今天的理解到這邊,如果上述的觀念有什麼出入的地方都希望能給予提點~感謝你 ԅ(≖‿≖ԅ)


上一篇
Day02 - this&Object Prototypes Ch3 Objects - Contents - Array
下一篇
Day04 - this&Object Prototypes Ch3 Objects - Contents - Property Descriptors 開頭
系列文
YDKJS 一邊讀 You Don't Know JS Yet 一邊卡關一邊弄懂的日子 ԅ(≖‿≖ԅ)30

尚未有邦友留言

立即登入留言