浅拷贝--Object.assign()方法

438 阅读1分钟

基本用法

Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象(target)。

用法:Object.assign(target, source)

    const target = { a: 1 };
    const source1 = { b: 2 };
    const source2 = { c: 3 };

    Object.assign(target, source1, source2);
    target // {a:1, b:2, c:3}
  • 如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。
    const target = { a: 1, b: 1 };
    const source1 = { b: 2, c: 2 };
    const source2 = { c: 3 };

    Object.assign(target, source1, source2);
    target // {a:1, b:2, c:3}
  • 如果只有一个参数,Object.assign会直接返回该参数。
    const obj = {a: 1};
    Object.assign(obj) === obj // true

Object.assign()--浅拷贝 (只拷贝一层)

    let obj = { name: 'lisa', age: 18, dept: { deptname: 'blackpink' } }
    let copyObj = Object.assign({}, obj) 

    copyObj.name = 'luo'
    copyObj.dept.deptname = 'pinkblack'

    console.log(obj)    //{ name: 'lisa', age: 18, dept: { deptname: 'pinkblack' } }
    console.log(copyObj) // { name: 'luo', age: 18, dept: { deptname: 'pinkblack' } }
    //对于第一层(基础类型),拷贝了值,对于引用类型拷贝了引用。

还有一些不常用的细节 可参考:www.jianshu.com/p/d5f572dd3…