属性简洁表示法
let obj = {
name: 'xioabai',
age: 4
}
console.log(obj)
let name = 'xioabai'
let age = 4
let obj = {
name,
age
}
console.log(obj)
属性名表达式
let name = 'xioabai'
let age = 4
let s = 'school'
let obj = {
name,
age,
[s]: 'maoxueyuan',
// study: function(){
// console.log(this.name + '正在学习')
// },
// study: () => {
// console.log(this.name + '正在学习') // 对象里面的方法不能使用箭头函数
// },
study(){
console.log(this.name + '正在学习') // 可以使用ES6 方法的简写方式
},
}
console.log(obj)
obj.study()
object.is()
console.log(2, '2') // false
console.log(NaN, NaN) // true
object.is跟 === 很类似,是一个严格模式, 区别就是在NaN的情况下,=== 返回的是false
let obj1 = {
name: 'xiaobai',
age: 4
}
let obj2 = {
name: 'xiaobai',
age: 4
}
console.log(obj1 == obj2) // false
console.log(Object.is(obj1, obj2)) // false
- 对象对比的不是内容而是引用地址所以返回的false
扩展运算符与Object.assign()
let x = {
a: 3,
b: 4
}
let y = {...x}
console.log(y)
Object.assign(y, x)
- Object.assign() 用于合并对象,第一个参数指的是目标对象,第二个参数是源对象
in
判断当前对象里面是否包含某个属性
a: 3,
b: 4
}
console.log('a' in x) // true
console.log('a1' in x) // fasle
let arr = [1, 2, 3]
console.log(3 in arr) // false
- 使用 in 判断数组的时候并不是判断有没有值是3,而是判断下标3 ,有没有内容
对象的遍历方法
let obj = {
name: 'xiaobai',
age: 4
}
for (let key in obj){
console.log(key, obj[key])
}
Object.keys(obj).forEach(key => {
console.log(key, obj[key])
})
Object.getOwnPropertyNames(obj).forEach(key => {
console.log(key, obj[key])
})
Reflect.ownKeys(obj).forEach(key => {
console.log(key, obj[key])
})