注意 enumerable 的特性會引響 Object.assign() 的行為
前言
在之前的 關於自定義 Property 的 enumerable 與 在 JavaScript 裡複製物件的新選項 分別提到了 enumerable 與 Object.assign() ,它們其實會互相引響,在此把學習的過程做個紀錄。
內容
範例如下
let obj = Object.create( {}, { prop1: { value: 2, enumerable: false, }, prop2: { value: 3, enumerable: true, }, }, ); // let copy = Object.assign({}, obj); console.log(copy); // [object Object] { // prop2: 3 // }
範例分別自定義 prop1 與 prop2 兩個 Property ,一個允許 enumerable ,另一個則不允許,接著透過 Object.assign() 後會發現 prop1 沒有被成功複製,所以 enumerable 不只引響 Object.getOwnPropertyNames() 的結果,也會引響 Object.assign() 的結果。
參考資料
[ developer.mozilla.org ] Object.defineProperty()
[ developer.mozilla.org ] Object.assign()
沒有留言:
張貼留言