object.assign方法的用处
为对象添加属性
|
|
这个方法通过assign方法将x属性和y属性天爱到了Point类的对象实例。
为对象添加方法
|
|
等同于:123456someClass.prototype.someMethod = function(arg1,arg2){ ...};someClass.prototype.antherMethod = function(){ ...};
上面的代码使用了对象属性的简洁表示法,直接将两个函数放在大括号中,再使用assign方法添加到someClass.prototype中。
克隆对象
|
|
上面的代码是将原始对象复制到一个空对象,就得到了原始对象的克隆。
不过采用这种方法克隆,只能克隆院士对象自身的值,不能克隆他继承的值。如果想要保持继承链,可以采用下面的代码。1234function clone(origin){ let originProto = Object.getPrototypeOf(origin); return Object.assign(Object.create(originProto),origin)}
合并多个对象
将多个对象合并到某个对象
|
|
如果希望合并后返回一个新对象,可以改写上面的函数,对一个空对象合并。
|
|
为属性指定默认值
|
|
上面的代码制定DEFAULTS是一个默认的对象,options对像是用户提供的参数,Object.assign方法将DEFAULTS和options合并成一个新对象,如果两者有同名属性,那么option的属性就会覆盖掉DEFAUTLTS的属性值
值得注意的是,由于存在深拷贝的问题,DEFAULTS对象和options对象所有的属性的值只能是简单类型,而不是指向另一个对象,佛泽,将导致DEFAULTS对象的该属性不起作用。