ES8对对象的扩展

Posted 飞鹰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES8对对象的扩展相关的知识,希望对你有一定的参考价值。

今天小编继续更新js中关于对象的一些新特性,期待着和大家一起进步。大家还可以关注我的微信公众号,蜗牛全栈。
一、Object.values():获取对象内值的数组

const obj = {
    name:"lilei",
    web:"www.baidu.com",
    course:"math"
}
console.log(Object.values(obj)) // ["lilei","www.baidu.com","math"]

二、Object.entries():返回二位数组,每个数组包含key和value

const obj = {
    name:"lilei",
    web:"www.baidu.com",
    course:"math"
}
console.log(Object.entries(obj))  // [["name","lilei"],["web","www.baidu.com"],["course","math"]]
console.log(Object.entries(["a","b","c"])) // [["0","a"],["1","b"],["2","c"]]

三、循环遍历:与es6中的解构和字符串模板结合

const obj = {
    name:"lilei",
    web:"www.baidu.com",
    course:"math"
}
for(let [key,val] of Object.entries(obj)){
    console.log(`${key}:${val}`)  // name:lilei   web:www.baidu.com   course:math
}

四、es8之前语法

const obj = {
    name:"lilei",
    web:"www.baidu.com",
    course:"math"
}
console.log(Object.keys(obj)) // ["name","web","course"]
const res = Object.keys(obj).map(key => obj[key])
console.log(res) // ["lilei","www.baidu.com","math"]

五、Object.getOwnPropertyDescriptors():获取对象自身属性修饰符

const obj = {
    name:"lilei",
    course:"math"
}
const desc = Object.getOwnPropertyDescriptors(obj)
console.log(desc) 
// {
//     name:{
//         value:"lilei", // 默认值
//         writable:true, // 属性是否可以改
//         enumerable:true,  // 是否可以通过for...in 循环遍历
//         configurable:true  // 是否可以通过delete删除掉
//     },
//     course:{
//         value:"math",
//         writable:true,
//         enumerable:true,
//         configurable:true
//     }
// }

六、与Reflect联合使用

const obj= {}
Reflect.defineProperty(obj,\'name\',{
    value:"lilei",
    writable:false,
    configurable:false,
    enumerable:true
})
Reflect.defineProperty(obj,\'age\',{
    value:18,
    writable:false,
    configurable:false,
    enumerable:false
})
console.log(obj) // {name:"lilei"}
obj.name= "zhangsan"
console.log(obj) // {name:"lilei"}
delete obj.name
console.log(obj) // {name:"lilei"}
for(let key in obj){
    console.log(key)  // 只有name。没有age
}

七、Object.getOwnPropertyDescriptor()

const obj = {
    name:"lilei",
    course:"math"
}
const desc = Object.getOwnPropertyDescriptor(obj,"name")
console.log(desc)
// {
//     value:"lilei", // 默认值
//     writable:true, // 属性是否可以改
//     enumerable:true,  // 是否可以通过for...in 循环遍历
//     configurable:true  // 是否可以通过delete删除掉
// }

以上是关于ES8对对象的扩展的主要内容,如果未能解决你的问题,请参考以下文章

ES8中的字符串扩展

ES8(2017)String扩展 padStart / padEnd

java与es8实战之六:用JSON创建请求对象(比builder pattern更加直观简洁)

java与es8实战之六:用JSON创建请求对象(比builder pattern更加直观简洁)

ES7-Es8 js代码片段

ES8常用新语法