1.对象取属性值
let obj = {a:1, b:2, c:3};
console.log(obj.a); //1
console.log(obj['a']); //1
2.Object.assign
1、合并对象
无相同属性
let o1 = { a: 1 }
let o2 = { b: 2 }
let o3 = { c: 3 }
let obj = Object.assign({},o1, o2, o3);
console.log(obj) // { a: 1, b: 2, c: 3 }
有相同属性,后面的属性覆盖前面的属性
let o1 = { a: 1 ,b:5}
let o2 = { b: 2 ,a:9}
let o3 = { c: 3 }
let obj = Object.assign({},o1, o2, o3); //{a: 9, b: 2, c: 3}
----当然,现在一般用es6的扩展运算符了,推荐使用哦
let obj={...o1,...o2,...o3} //和上面输出的结果一样
2.浅拷贝
let obj1 = {a: 1,
b: {
c: 2
}
}
let obj2 = Object.assign({}, obj1)
obj1.a = 2
console.log(obj1);//{a: 2, b: {c:2}
console.log(obj2);//{a: 1, b: {c:2}
obj1.b.c = 3
console.log(obj1);//{a: 2, b: {c:3}
console.log(obj2);//{a: 1, b: {c:3}
//我们发现,当改变引用数据类型时,obj1和obj2都改变了,此时说明改变的是引用地址,这就是浅拷贝,我们一般用深拷贝
3.扩展之深拷贝 JSON.parse、JSON.stringify
let obj1 = {
a: 1,
b: {
c: 2
}
}
let obj2=JSON.parse(JSON.stringify(obj1))
obj2.b.c=3
console.log(obj1);//{a: 1, b: {c:2}
console.log(obj2);//{a: 1, b: {c:3}
//我们发现,当改变引用数据类型时,只有obj2改变了,obj1没变,这就是深拷贝。
3.Object.keys
1、对象属性转化为一个数组,数组中包含着obj自己的所有属性,不包含原型链中的属性。
对象操作
let obj = {a: 1, b: 2, c: 3}
let arr = Object.keys(obj)
console.log(arr) //["a", "b", "c"]
数组和字符串操作,返回的是索引值
let obj='abc'
let arr = Object.keys(obj)
console.log(arr) //["0", "1", "2"]
let obj=['a','b','c']
let arr = Object.keys(obj)
console.log(arr) //["0", "1", "2"]
4.Object.values
1、对象值转化为一个数组,数组中包含着obj自己的所有属性值。
let obj = {a: 1, b: 2, c: 3}
let arr = Object.values(obj)
console.log(arr) //[1, 2, 3]
4.for in遍历对象键值
let obj = { 0: 'a', 1: 'b', 2: 'c' }
for (let prop in obj) {
console.log(prop); //遍历键
console.log(obj[prop])//遍历值
}
5.Object.entries
返回一个对象key和value键值对组成的数组
const obj = { a: 'aaa', b: 'bbb' };
console.log(Object.entries(obj));
// [["a", "aaa"], ["b", 'bbb']]
6.obj.hasOwnProperty
判断对象中属性是否存在,用于实例对象
const obj = { a: 1, b: 2 };
console.log(obj.hasOwnProperty('a')); //true
console.log(obj.hasOwnProperty('c')); //false
\