ES系列 | 对象的扩展

113 阅读2分钟

「这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战」。

ES系列文章

定义一个对象:

let object = {
    name: 'xxx',
    age:22
}
console.log(object)

对象的扩展

  • 属性简洁表达
let name ='xxx'
let age = 22
let object = {
    name,
    age
}
console.log(object)
  • 属性名表达式 在ES5中,定义对象的属性有两种方法
// 方法一:标识符作为属性名
object.foo = true;
// 方法二:表达式作为属性名
object["foo"] = true;
let name ='xxx'
let age = 22
let s = 'xxx1'
let object = {
    name,
    age,
    [s]:'hello'
}
console.log(object)

//当属性的key是变量的时候,在外面加一个中括号[],表示对象的key值

let name ='xxx'
let age = 22
let s = 'xxx1'
let object = {
    name,
    age,
    [s]:'hello',
    study:function(){
        console.log(this.name + '哈哈哈')
    }
    //ES6简写方式:
    study(){
         console.log(this.name + '哈哈哈')
    }    
}
object.study()

  • Object.is() 判断两个值是否严格相等,因在ES5中,并不能处理比较两个值是否严格相等,对于NaN,+0,-0等并不能做出严格相等来判断。
 console.log(Object.is(2, '2'))
 //false
 console.log(Object.is(NaN, NaN))
 //true
 console.log(Object.is(+0, -0))
 //false
 //了解就行
let object1 = {
    name:'xxx'
    age:22
}
let object2 = {
    name:'xxx'
    age:22
}
console.log(object1 == object2)
//false
console.log(Object.i(object1, object2))  
对于对象的判断并不是长得一样就相等,而是判断对象的地址是否相等。
let object2 = object1
//true
//注意:对象是引用数据类型
  • 扩展运算符与Object.assign()
let x = {
    a:3,
    b:4
}
//let y= {...x}
Object.assign(y,x)
console.log(y)
//将源对象的所有可枚举属性复制到目标对象上。
let x = {
    a:3,
    b:4
}
let y = {
    c:9,
    a:7
}
//let y= {...x}
Object.assign(y,x)
console.log(y)
//如果目标对象与源对象用同名属性,或多个源对象具有同名属性,则后面的属性会覆盖前面的属性:
  • in 判断对象里面是否包含某个属性的时候使用,也可以用在数组中。
let x = {
    a:3,
    b:4
}
let y = {
    c:9,
    a:7
}
console.log('a' in x)

let arr =[1,2,3]
console.log(3 in arr)
//输出TRUE或FALSE
//判断数组下标为3的位置是否有值
  • 对象的遍历方式
let object = {
    name: 'xxx',
    age:22,
    school:'xxx1'
}
第一种:
for(let key in object){
    console.log(key, object[key])
}
第二种 :
Object.keys(object).forEach(key =>{
     console.log(key, object[key])
})
第三种 :
Object.getOwnPropertyNames(object).forEach(key =>{
     console.log(key, object[key])
})
第四种 :
、Object.ownKeys(object).forEach(key =>{
     console.log(key, object[key])

一个前端小白,若文章有错误内容,欢迎大佬指点讨论!