美文网首页ES6
Object.assign()方法的使用

Object.assign()方法的使用

作者: _Miss_Chen | 来源:发表于2019-04-02 01:31 被阅读100次

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

    (这么官方,一定看不懂了吧,我们往下面看。)

    Object.assign()

    语法

    Object.assign (target, source1,source2, source3, …);

    参数

    target目标对象

    target目标对象

    返回值

    目标对象。

    方法

    1、Object.assign()第一个参数是目标对象,后面的都是源对象。

    
    const target = {a: 1};
    const source1 = {b: 2};
    const source2 = {c: 3};
    
    Object.assign(target, source1, source2);
    
    console.log(target)// {a:1, b:2, c:3}
    
    

    2、如果发生的值是一个对象,Object.assign的处理方法是直接替换,而不是添加。t

    
    console.log(Object.assign(小陈同学))
    //String {"小陈同学"}   object
    
    

    3、如果源对像与目标对象有相同的属性名,或源对象中有相同的属性名,后面的会覆盖前边的值 。

    
    const target = { a: 1, b: 2 };
    const source = { b: 4, c: 5 };
    
    const returnedTarget = Object.assign(target, source);
    
    console.log(target);// Object { a: 1, b: 4, c: 5 }
    
    console.log(returnedTarget);//  Object { a: 1, b: 4, c: 5 }
    
    

    4、null和undefined 不能作为参数传入,因为null和undefined 不能转成Object

    | 如果undefined和null不在首参数,就不会报错
    
    const target = {a: 1};
    
    console.log(Object.is(Object.assign( target, undefined), target)); //true
    
    console.log(Object.assign( target, null) ===  target); //true
    
    

    用处

    1、合并多个对象

    const merge = (target, ...sources) => Object.assign(target, ...sources);

    2、克隆对象

    function clone(a) {
        return Object.assign({}, a);
      }

    3、为对象添加方法

    Object.assign(SomeClass.prototype, {
        someMethod(a, b) {
           },
        anotherMethod() {
              }
       });​

    4、为对象添加属性

    class Point {
        constructor (a,b) {
          Object.assign(this, {a,b})
        }
      }

    有帮助的话 ,别忘了下面的心心点你一下(想知道更多的知识别忘了给我留言哦)

    如有不懂或解决不了的问题可以私信我,或者在下方评论 ,小陈帮你解决困难哦。

    相关文章

      网友评论

        本文标题:Object.assign()方法的使用

        本文链接:https://www.haomeiwen.com/subject/xzmibqtx.html