注意 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()
沒有留言:
張貼留言