Object.assign()

参考: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

Oject.assign()方法将源对象上的属性拷贝到目标对象,最后返回目标对象。
语法

Object.assign(target, ...sources);

特点: 浅拷贝,只是数据的引用(浅拷贝拷贝的是栈空间内存地址,并不是拷贝的内容)

function test() {
  'use strict';

  let obj1 = { a: 0 , b: { c: 0}};
  let obj2 = Object.assign({}, obj1);
  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
  
  obj1.a = 1;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
  console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
  
  obj2.a = 2;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
  
  obj2.b.c = 3;
  console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
  console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}
  
  // Deep Clone
  obj1 = { a: 0 , b: { c: 0}};
  let obj3 = JSON.parse(JSON.stringify(obj1));
  obj1.a = 4;
  obj1.b.c = 4;
  console.log(JSON.stringify(obj3)); // { a: 0, b: { c: 0}}
}

test();

对于相同属性的数据,后面的数据会覆盖前面的数据,比如数组,对象

// 对象
var o1 = { a: 1, b: 1, c: 1 };
var o2 = { b: 2, c: 2 };
var o3 = { c: 3 };

var obj = Object.assign({}, o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 } ,b改变为2,c改变为3

// 数组
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];

var arr= Object.assign({}, arr1, arr2);
console.log(arr); // { '0': 4, '1': 5, '2': 6 } 会隐式转化为对象
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ES6语法 ,对象的合并 一般就是复制对象,为了不修改源对象 注意,Object.assign 会跳过那些值为 n...
    FF_C阅读 634评论 0 0
  • Object.assign()方法用于将所有可枚举的属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 ...
    执著_7a69阅读 1,860评论 0 2
  • 1. Object.assign()方法可以把任意多个的源对象自身的可枚举属性拷贝给目标对象,然后返回目标对象。 ...
    overflow_hidden阅读 534评论 0 0
  • Object.assign函数的使用,使用该函数我们可以快速的复制一个或者多个对象到目标对象中,本文内容涉及es6...
    乖乖果效36阅读 3,467评论 0 1
  • (一) 自九月来到这个学校, 几乎是每隔一个周末, 我都会去找在广州的老同学玩。 也不是因为那句“世界那么大,想去...
    杂家阿牛阅读 624评论 0 0

友情链接更多精彩内容