Object.assign()
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.如果对象之间有同名属性,复制的时候后面的属性会覆盖前面的属性。
3.如果只有一个参数,则直接返回此参数。
const obj = {a: 1};
Object.assign(obj) === obj // true
4.如果该参数不是对象,则会先转成对象,然后返回。
5.由于undefined和null无法转成对象,所以如果它们作为第一个参数目标对象,就会报错。
如果作为源对象参数,源对象中无法转成对象的,就会跳过,不会报错。
6.只拷贝源对象的自身属性(不拷贝继承属性),也不拷贝不可枚举的属性。
Object.keys,Object.values,Object.entries()
1.Object.keys()
返回对象所有可遍历的属性名(不包含继承的)
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.keys(obj)) {
console.log(key); // 'a', 'b', 'c'
}
2.Object.values()
返回对象所有可遍历的属性值(不包含继承的)
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.values(obj)) {
console.log(key); // '1', '2', '3'
}
3.Object.entries()
返回对象所有可遍历的键值对数组(不包含继承的)
let obj = { a: 1, b: 2, c: 3 };
for (let key of Object.entries(obj)) {
console.log(key); // ["a", 1], ["b", 2],["c", 3]
}
网友评论