Object.assign()

1. Object.assign可以实现对象的合并,或者说把src对象的属性添加到dest对象上.

2. Object.assign(dest, ...srcs) src参数可以有一个,也可以有多个,如果多个src对象有相同属性名,那么以最后一个属性值为最终传到dest对象中的值.

问题:Object.assign是浅拷贝还是深拷贝?

解答:因为此方法复制的是src的属性值,那么当src属性值是简单数据类型时,是深拷贝【深拷贝,一方变化另一方不会变化】,如果src属性是引用数据类型时,是浅拷贝【一方变化会影响另一方的值】

  let src = {
    name: 'James'
  };
  let dest = {
    age: '19'
  };
  let src_1 = {
    name: 'Marry'
  };
  Object.assign(dest, src, src_1);
  console.log(dest);
  console.log(src_1);
  src_1.name = 'hello';
  console.log(src_1);
  console.log(dest);

 console结果依次为:【深拷贝】

 {age: '19', name: 'Marry'}
 {name: 'Marry'} name: "hello"[[Prototype]]: Object
 {name: 'hello'}
 {age: '19', name: 'Marry'}

3. 不能在两个对象之间转移获取函数和设置函数【setter 和 getter】

4. 

上一篇:那些有趣的递归问题:汉诺塔和青蛙跳台阶


下一篇:文件-上传