在JavaScript中有8种数据类型(7种基本数据类型和1种复杂数据类型),其中Object(对象)是复杂数据类型。
一、创建对象
创建对象有两种方式:
1、构造函数的方式
let user = new Object()
2、字面量方式
let user = {}
使用字面量的方式创建对象就是将一些属性以键值对的形式放到{}中。
let user = {
name: 'zhang', // 键"name", 值"zhang"
age: 29 // 键"age", 值29
}
二、访问对象属性值
可以使用点符号访问对象属性值:
console.log(user.name); // zhang
console.log(user.age); // 29
如果对象的属性名为多字词语,点操作就不能用了
let user = {
name: 'zhang',
age: 29,
'my habit':'run'
}
// 提示语法错误
console.log(user.my habit)
另一种方式就是使用方括号,可用于任何字符串:
console.log(user['my habit']) // run
这里注意方括号中的字符串要放在引号中,单引号或双引号都可以。
方括号还提供了一种可以通过表达式来获取属性名的方法
let key = 'my habit'
console.log(user[key]) // run
三、"in"操作符
"in"操作符可以检查属性是否存在,存在返回true,不存在返回false
console.log('name' in user) // true
console.log('gender' in user) // false
四、"for…in"循环
使用"for…in"可以遍历一个对象的所有键
for(let key in user){
console.log(key) // name、age、my habit
console.log(user[key]) // zhang、29、run
}
五、Object.assign()
Object.assign(dest,[src1,src2,src3…])
第一个参数dest是目标对象
后面的参数src1,src2,src3…是源对象
该方法是将所有源对象的属性拷贝到目标对象dest中。换句话说,从第二个开始的所有参数的属性都被拷贝到第一个参数的对象中。
结果返回dest
我们可以用它来合并多个对象:
let user = {
name: 'zhang',
age: 29,
'my habit':'run'
}
let person1 = {gender: 'men'}
let person2 = {address: 'zhengzhou'}
console.log(Object.assign(user,person1,person2))
// user = {name: "zhang", age: 29, my habit: "run", gender: "men", address: "zhengzhou"}
如果被拷贝的属性的属性名已经存在,那么它会被覆盖:
let user = {
name: 'zhang',
age: 29,
'my habit':'run'
}
Object.assign(user,{name:'li'})
console.log(user.name) // li