当前位置:   article > 正文

Object.assign() (最全 最干净 最好用)_object.assign 大写字母

object.assign 大写字母

对象属性合并

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

  1. const target = { a: 1, b: 2 };
  2. const source = { b: 4, c: 5 };
  3. const source1 = { E: 6, F: 6 };
  4. const source2 = { G: 7, H: 7 };
  5. const source3 = { I: 8, J: 8 };
  6. const returnedTarget = Object.assign(target, source,source1,source2,source3);
  7. console.log(target);
  8. // Expected output: Object { a: 1, b: 4, c: 5, E: 6, F: 6, G: 7, H: 7, I: 8, J: 8 }
  9. console.log(returnedTarget === target);
  10. // Expected output: true

注意事项

1、Object.assign 方法只会拷贝源对象自身的并且可枚举的属性到目标对象,继承属性和不可枚举属性是不能拷贝的。

2、针对深拷贝,需要使用其他办法,因为 Object.assign()拷贝的是属性值。假如源对象的属性值是一个对象的引用,那么它也只指向那个引用。

3、目标对象自身也会改变

4、异常会打断后续拷贝任务

5. ie不兼容此写法

深浅拷贝示例

  1. function test() {
  2. 'use strict';
  3. let obj1 = { a: 0 , b: { c: 0}};
  4. let obj2 = Object.assign({}, obj1);
  5. console.log(JSON.stringify(obj2)); // { "a": 0, "b": { "c": 0}}
  6. obj1.a = 1;
  7. console.log(JSON.stringify(obj1)); // { "a": 1, "b": { "c": 0}}
  8. console.log(JSON.stringify(obj2)); // { "a": 0, "b": { "c": 0}}
  9. obj2.a = 2;
  10. console.log(JSON.stringify(obj1)); // { "a": 1, "b": { "c": 0}}
  11. console.log(JSON.stringify(obj2)); // { "a": 2, "b": { "c": 0}}
  12. obj2.b.c = 3;
  13. console.log(JSON.stringify(obj1)); // { "a": 1, "b": { "c": 3}}
  14. console.log(JSON.stringify(obj2)); // { "a": 2, "b": { "c": 3}}
  15. // Deep Clone
  16. obj1 = { a: 0 , b: { c: 0}};
  17. let obj3 = JSON.parse(JSON.stringify(obj1));
  18. obj1.a = 4;
  19. obj1.b.c = 4;
  20. console.log(JSON.stringify(obj3)); // { "a": 0, "b": { "c": 0}}
  21. }
  22. test();

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/68100
推荐阅读
相关标签
  

闽ICP备14008679号