与其说是对象合并,还不如说是JavaScript中对象属性的复制和转移,将多个对象中的属性合并到一个对象中
12345678
var person = { name : 'John', age : 24},location = { address : 'Location', city : 'NewYork'} ;
1
Object.assign(target, ...sources) // target为目标对象,sources可以是多个源对象
这个方法可以帮助我们拷贝多个源对象中所有可以被枚举的自身属性到目标对象中,如果目标对象中的属性与源对象中的属性相同的话,源对象的属性会覆盖目标对象的属性,需要注意的是,这里面可以拷贝的属性必须是可以被枚举的自身属性,一个是可枚举,一个是自身,两个条件是必须的,这个方法作用的过程中,会先调用源对象的getter方法,然后调用目标对象的setter方法,从而达到拷贝属性到目标对象的目的
123
Object.assign(person,location); name , age , address, city */
在ES6里面我们使用Obj.assign,我们也可以用ES5来模拟Obj.assign,需要注意拷贝自身的可枚举属性
1234567891011
function (target, source) { if (typeof target === 'object' && typeof source === 'object') { for (var key in source) { if (fromObj.hasOwnProperty(key)) { target[key] = source[key]; } } }else{ throw "Assign function can apply only on object"; }}