记录Object.assign使用
概念:Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。
结构:
Object.assign(target, …sources) => Object.assign(目标对象, 源对象)
用法:
一、目标对象和源对象无重名属性
var target={name:'张三',age:20}; //目标对象
var source={sex:'男'}; //源对象
var result=Object.assign(target,source); //结果
console.log(target,target==result);
//打印结果:{name:'张三',age:20,sex:'男'} true
结果显示source的sex属性合并到了target上。如果我们想把多个属性合并到一起,又不改变原对象,那么我们就可以设置一个空对象来作为目标对象,如下:
var result=Object.assign({},target,source);
二、目标对象和源对象有重名属性
var target={name:'张三',age:20}; //目标对象
var source={sex:'男',age:25}; //源对象
var result=Object.assign(target,source); //结果
console.log(target)
//打印结果:{name:'张三',age:25,sex:'男'}
这时我们可以看到存在同名属性,后面的属性值会覆盖前面的属性值。
三、有多个源对象
var target={name:'张三',age:20}; //目标对象
var source1={sex:'男',age:25}; //源对象
var source2={name:'李四',age:30}; //源对象
var result=Object.assign(target,source1,source2); //结果
console.log(target)
//打印结果:{name:'李四',age:30,sex:'男'}
有多个源对象情况也是和一个源对象一样的。没有同名的属性会直接复制到目标对象上,同名的属性后面的属性值会覆盖前面的同名属性值。
四、兼容性
目前IE浏览器不兼容Object.assign(),如果需要兼容IE的话最好不要直接使用这个方法,不过现在IE已经下架了
五、相同的方法$.extend()
var target={name:'张三',age:20}
var source1={sex:'男',age:25}
var source2={name:'李四',age:30}
var result=Object.assign(target,source1,source2)
console.log(target)
//打印结果:{name:'李四',age:30,sex:'男'}
var target1={name:'张三',age:20}
var source11={sex:'男',age:25}
var source22={name:'李四',age:30}
var result=$.extend(target1,source11,source22)
console.log(target1)
//打印结果:{name:'李四',age:30,sex:'男'}
以上的方法也是从别的大佬那里学来的,哈哈哈哈,个人也记录一下学习过程。
Learning is always a painful process