2023年10月23日 星期一

注意 Object.assign() 不能複製自定義的 Property

 注意 Object.assign() 不能複製自定義的 Property

前言

  在之前的 注意 enumerable 的特性會引響 Object.assign() 的行為 有提到 Object.assign() 在特別情形不會完全複製內容,最近又發現自定義的 Property 全部都不會複製!在此把學習的過程做個紀錄。


內容

  範例如下

let obj = {
};
//
Object.defineProperty( obj , 'prop' ,{ value:10 } );
console.log( obj.prop );//10
//
Object.defineProperty( obj , 'prop1' ,{
  value : 20,
  writable: true 
} );
console.log( obj.prop1 );//20
//
let copyObj = Object.assign( {} , obj );
console.log( copyObj.prop );//undefined
console.log( copyObj.prop1 );//undefined


範例在 obj 自定義 prop 與 prop1 ,再透過 Object.assign() 複製到 copyObj ,複製後會發現 prop 與 prop1 並不存在於 copyObj ,看來複製自定義的 function 是需要自己寫的!


參考資料

[ developer.mozilla.org ] Object.defineProperty()

[ developer.mozilla.org ] Object.assign()


相關文章與資料

注意 enumerable 的特性會引響 Object.assign() 的行為

沒有留言:

張貼留言