一、对象取属性值
let obj = {name: 'zhang', age: '24', tel: '90909090'}
let name = obj.name
let age = obj['age']//这样取属性值,属性外面的引号不能少
console.log(name)
console.log(age)
console.log(obj)
输出: zhang
24
{name: "zhang", age: "24", tel: "90909090"}
二、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 }
console.log(o1) // { a: 1, b: 2, c: 3 }
注意:目标对象自身也会改变。
有相同属性
let o1 = { a: 1, b: 1, c: 1 }
let o2 = { b: 2, c: 2 }
let o3 = { c: 3 }
let obj = Object.assign({}, o1, o2, o3)
console.log(obj) // { a: 1, b: 2, c: 3}
注意:属性被后续参数中具有相同属性的其他对象覆盖,但不会改变原来o1,o2,o3对象,改变的是目标对象
2、复制一个对象
let obj = { a: 1 }
let copy = Object.assign({}, obj)
console.log(copy) // { a: 1 }
3、拷贝
let obj1 = { a: 0 , b: { c: 0}}
let obj2 = Object.assign({}, obj1)
console.log(JSON.stringify(obj2)) // { a: 0, b: { c: 0}}
obj1.a = 1
console.log(JSON.stringify(obj1)) // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)) // { a: 0, b: { c: 0}}
obj2.a = 2
console.log(JSON.stringify(obj1)) // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)) // { a: 2, b: { c: 0}}
obj2.b.c = 3
console.log(JSON.stringify(obj1)) // { a: 1, b: { c: 3}}
console.log(JSON.stringify(obj2)) // { a: 2, b: { c: 3}}
这里Object.assign()拷贝的是对象属性,如果对象属性为引用数据类型
,那么改变引用数据类型的属性值都会发生改变,所以项目中一般使用深拷贝
// 深拷贝
obj1 = { a: 0 , b: { c: 0}}
let obj3 = JSON.parse(JSON.stringify(obj1));
obj1.a = 4
obj1.b.c = 4
console.log(JSON.stringify(obj3)) // { a: 0, b: { c: 0}}
注意:这里利用JSON.parse(),JSON.stringify()进行对象深拷贝,不会
对原对象进行修改,JSON.parse()将字符串转化为对象,JSON.stringify
()将对象转化为字符串
三、Object.keys(obj)
1、对象属性转化为一个数组,数组中包含着obj自己的所有属性,不包含原型链中的属性。
let obj = {a: 1, b: 2, c: 3}
let arr = Object.keys(obj)
console.log(arr) //[a, b, c]
console.log(obj) //{a: 1, b: 2, c: 3}
如果传入的是数组和字符串则返回的是数组元素与字符的索引值
let str = "Beijing"
let arr = [a, b, c]
console.log(Object.keys(str))
// ["0", "1", "2", "3", "4", "5", "6"]
console.log(Object.keys(arr))
//["0", "1", "2"]
如果需遍历对象操作对象,这里也可以写成如下形式:
let obj = {a: 1, b: 2, c: 3}
Object.keys(obj).forEach(key => {
obj[key] = ''
})
console.log(obj) //{a: '', b: '', c: ''}
四、for in遍历对象键值
var obj = {0: 'a', 1: 'b',2 :'c'}
for (var i in obj) {
console.log(i, ":", obj[i])
}
输出 0 : a
1 : b
2 : c