ES6对象扩展

本文介绍了ES6中对象的扩展语法,包括属性的简洁表示法、Object.is()的使用、扩展运算符与Object.assign()的应用以及对象的遍历方法。简洁表示法允许直接用变量作为键值,Object.is()进行严格相等比较,扩展运算符简化合并对象,而in运算符用于检查对象属性或数组元素是否存在。
摘要由CSDN通过智能技术生成

今天小编和大家一块聊聊ES6中对对象的扩展语法,还有一些常用的语法,相信在不久的将来,肯定会在Vue中看到对象的影子。大家也可以关注我的微信公众号,蜗牛全栈。

一、属性的简洁表示法:主要针对值用变量表示,并且键和值的变量一致

1、普通对象声明

let obj = {
    name:"lilei",
    age:34
}
console.log(obj)
复制代码

2、简洁表示法

let name = "lilei"
let age = 34
let obj = {
    name,
    age
}
复制代码

3、属性名表达式:主要针对键为变量的情况,需要将变量加上方括号即可

let s = "school"
let obj = {
    name:"lilei",
    age:34,
    s:"school"
}
console.log(obj) // {name:"lilei",age:34,s:"school"}
let s = "school"
let obj = {
    name:"lilei",
    age:34,
    [s]:"school"
}
console.log(obj) // {name:"lilei",age:34,school:"school"}
复制代码

4、对象内的函数

let s = "school"
let obj = {
    name:"lilei",
    age:34,
    [s]:"school",
    study:function(){
        console.log(this.name+"正在学习")
    }
}
obj.study() // lilei正在学习
let s = "school"
let obj = {
    name:"lilei",
    age:34,
    [s]:"school",
    study:() => {
        console.log(this.name+"正在学习")
    }
}
obj.study() // 报错:can't read property 'name' of undefind(原因就是箭头函数的this指向问题,参见小编的箭头函数文章)
let s = "school"
let obj = {
    name:"lilei",
    age:34,
    [s]:"school",
    study(){
        console.log(this.name+"正在学习")
    }
}
obj.study() // lilei正在学习
复制代码

二、Object.is():相当于严格判断的三个等号

console.log(Object.is(2,'2')) // false
console.log(Object.is(NaN,NaN)) // true
console.log(Object.is(+0,-0)) // false
let obj1 = {
    name:"lilei",
    age:34
}
let obj2 = {
    name:"lilei",
    age:34
}
console.log(obj1 == obj2) // false 
console.log(Object.is(obj1,obj2)) // false 引用类型的堆内存地址不一致
let obj1 = {
    name:"lilei",
    age:34
}
let obj2 = obj1
console.log(Object.is(obj1,obj2)) // true 引用类型的堆内存地址一致
复制代码

三、扩展运算符与Object.assign()

let x = {
    a:3,
    b:4
}
let y = {...x}
console.log(y) // {a:3,b:4}
let x = {
    a:3,
    b:4
}
let y = {}
Object.assign(y,x)
console.log(y) // {a:3,b:4}
let x = {
    a:3,
    b:4
}
let y = {
    c:5,
    a:6
}
Object.assign(y,x)
console.log(y) // {a:6,b:4,c:5}
复制代码

四、in:判断数组指定下标是否存在值;判断对象是否存在指定键

let x = {
    a:3,
    b:4
}
console.log("a" in x) // true
let arr = [1,2,3]
console.log(3 in arr) // false 判断下表为3的位置是否有值,而不是值3
复制代码

五、对象的遍历 方法1

let obj = {
    name:"lilei",
    age:34,
    school:"School"
}
for(let key in obj){
    console.log(key,obj[key])
}
复制代码

方法2

let obj = {
    name:"lilei",
    age:34,
    school:"School"
}
Object.keys(obj).forEach(key => {
    console.log(key,obj[key])
})
复制代码

方法3

let obj = {
    name:"lilei",
    age:34,
}
Object.getOwnPropertyNames(obj).forEach(key => {
    console.log(key,obj[key])
})
复制代码

方法4

let obj = {
    name:"lilei",
    age:34,
    school:"School"
}
Reflect.ownKeys(obj).forEach(key => {
    console.log(key,obj[key])
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞鹰3995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值