Object.assign()知识点
先看一个案例,当比较两个对象的时候,是用第二个obj2 去替换obj1 的内容
当比较三个对象的时候,输出的是{}里面的内容
Object.assign()浅比较
let obj1 = {
x: 100,
y: 300,
n: {
name: 'Lily',
gender: 'female'
}
}
let obj2 = {
z: 800,
y: 600,
n: {
hobby: 'reading',
flower: 'lily'
}
}
let obj = Object.assign({}, obj1, obj2)
console.log(obj);
console.log(obj1 == obj);
结果如上,直接用obj2.n的内容全部替换,而不是比较n里面的内容。
原型重定向中使用Object.assign()
如果直接重定向,Fn的prototype缺少consrtuctor,同时Fn的prototype上原来的x,y也丢失了。
如果用Object.assign(),得到的Fn.prototype缺少consrtuctor,因为内置的Fn.prototype里面的consrtuctor是不可枚举的,合并后不能赋给新的对象。解决办法是给proto手动加一个constructor。
这样得到的Fn.prototype有了constructor,但是地址和之前的不一样。如果要得到和之前一样的地址的Fn.prototype应该怎么做呢?