JavaScriptの完全なクローンオブジェクト

2244 ワード

完全なクローンオブジェクト
対象を完全にクローンしたいなら、対象のプロトタイプの属性もコピーしなければなりません.次のような書き方ができます.
//    
const clone1 = {
  __proto__: Object.getPrototypeOf(obj),
  ...obj
};

//    
const clone2 = Object.assign(
  Object.create(Object.getPrototypeOf(obj)),
  obj
);

//    
const clone3 = Object.create(
  Object.getPrototypeOf(obj),
  Object.getOwnPropertyDescriptors(obj)
)
上のコードの中で、書き方は一の__uプロト.属性はブラウザ以外の環境では必ずしも展開されないので、書き方二と書き方三をオススメします.(es 6オブジェクトの拡張:ソースアドレス:http://es6.ruanyifeng.com/#docs/object)