【ES8(2017)】Object 扩展 values() / entries() / getOwnPropertyDescriptors()
文章目錄
- Object.values()
- Object.entries()
- Object.getOwnPropertyDescriptors()
ES8之前獲取對象的每個屬性的value值:
const obj = {name: 'xiaoming',course: 'es' } console.log(Object.keys(obj)) const res = Object.keys(obj).map(key => obj[key]) console.log(res) // ["xiaoming", "es"]ES8中對象擴(kuò)展補(bǔ)充了兩個靜態(tài)方法,用于遍歷對象:Object.values(),Object.entries()
Object.values()
Object.values() 返回一個數(shù)組,其元素是在對象上找到的可枚舉屬性值。屬性的順序與通過手動循環(huán)對象的屬性值所給出的順序相同。(for...in還會遍歷原型上的屬性值)
const obj = {name: 'xiaoming',course: 'es' } console.log(Object.values(obj)) // ["xiaoming", "es"]Object.values 是在對象上找到可枚舉的屬性的值,所以只要這個對象是可枚舉的就可以,不只是{}這種形式。
Object.entries()
Object.entries() 方法返回一個給定對象自身可枚舉屬性的鍵值對數(shù)組,其排列與使用for...in循環(huán)遍歷該對象時返回的順序一致。(區(qū)別在于 for-in 循環(huán)也枚舉原型鏈中的屬性)
我們知道 Object 是不可直接遍歷的,如果使用Object.entries()則可以完成遍歷任務(wù)。
let xiaoming = {'name': 'xiaoming','age': 18,'addr': 'China' }for (let [k, v] of Object.entries(xiaoming)) {console.log(k, v) } // name,xiaoming // age,18 // addr,ChinaObject.entries() 返回的是個數(shù)組,里面包含了[key,value]的數(shù)據(jù),這里也用了解構(gòu)賦值的方式。
Object.getOwnPropertyDescriptors()
defineProperty 的第三個參數(shù)就是描述符(descriptor)。這個描述符包括幾個屬性:
- value [屬性的值]
- writable [屬性的值是否可被改變]
- enumerable [屬性的值是否可被枚舉]
- configurable [描述符本身是否可被修改,屬性是否可被刪除]
總結(jié)
以上是生活随笔為你收集整理的【ES8(2017)】Object 扩展 values() / entries() / getOwnPropertyDescriptors()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ab plc软件_【万泉河】PLC垃圾程
- 下一篇: ssm read time out的原因