http://exploringjs.com/es6/ch_oop-besides-classes.html#Object_assign由著,是一本非常流行的关于ES6的书,他说,
如果希望克隆具有与原始克隆相同的原型,可以使用Object.getPrototypeOf()和Object.create(): 函数克隆(Orig){ const origProto = Object.getPrototypeOf(orig);返回Object.assign(Object.create(origProto),orig);}
但这似乎不是真的,
var a = {a:1};
var o1 = Object.create(a);
Object.getPrototypeOf(o1); //shows {a:1} of course
var o2 = Object.assign(o1);
Object.getPrototypeOf(o2); // also shows {a:1}那么,为什么他们在克隆人中说“和原始原型一样”呢?Object.assign似乎已经给出了与原版相同的原型,而且他们正在创建的clone()复制了原型中所有可枚举的方法,完全失去了到原型的链接。
发布于 2017-07-03 18:10:29
var o2 = Object.assign(o1);等于:
var o2 = o1;当Object.assign返回第一个参数时。以下参数被复制到第一个参数中,因此您可以这样做:
var o2=Object.assign({},o1);你看他们是平等的,除了原型。
https://stackoverflow.com/questions/44891698
复制相似问题