ES6 Object.assign()

常见用途:

    Object.assign 方法有很多用处:

(1) 为对象添加属性

class Point {
    constructor(x, y) {
        Object.assign(this, {x, y});
    }
}

 上面方法通过 Object.assign 方法,将 x 属性 和  y 属性添加到 Point 类的对象实例.

(2) 为对象添加方法
 

Object.assign ( SomeClass.prototype, {
    someMethod(arg1, arg2) {
        ....
    },
    anotherMethod() {
        ....
    }
});

上面代码使用了对象属性的简洁表示法, 直接将两个函数放在大括号中, 再使用assign方法添加到SomeClass.prototype之中。

(3) 克隆对象

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

上面代码将原始对象拷贝到一个空对象, 就得到了原始对象的克隆。
不过, 采用这种方法克隆, 只能克隆原始对象自身的值, 不能克隆它继承的值。 如果想要保持继承链, 可以采用下面的代码。
 

function clone(origin) {
    let originProto = Object.getPrototypeOf(origin);
    return Object.assign(Object.create(originProto), origin);
}

(4) 合并多个对象

    将多个对象合并到某个对象.

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

如果希望合并后返回一个新对象,可以改写上面函数,对一个空对象合并.

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

(5) 为属性指定默认值

const DEFAULTS  {
    logLevel: 0,
    outputFromat: 'html'
};

function processContent( options) {
    let options = Object.assign({}, DEFAULTS, options);
}

上面代码中, DEFAULTS 对象是默认值, options 对象是用户提供的参数。 Object.assign 方法
将 DEFAULTS 和 options 合并成一个新对象, 如果两者有同名属性, 则 option 的属性值会覆盖 DEFAULTS 的属性值。
注意, 由于存在深拷贝的问题, DEFAULTS 对象和 options 对象的所有属性的值, 都只能是简单类型, 而不能指向另一个对
象。 否则, 将导致 DEFAULTS 对象的该属性不起作用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值