日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ES8(2017)】Object 扩展 values() / entries() / getOwnPropertyDescriptors()

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【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中對象擴展補充了兩個靜態方法,用于遍歷對象:Object.values(),Object.entries()

Object.values()

Object.values() 返回一個數組,其元素是在對象上找到的可枚舉屬性值。屬性的順序與通過手動循環對象的屬性值所給出的順序相同。(for...in還會遍歷原型上的屬性值)

const obj = {name: 'xiaoming',course: 'es' } console.log(Object.values(obj)) // ["xiaoming", "es"]

Object.values 是在對象上找到可枚舉的屬性的值,所以只要這個對象是可枚舉的就可以,不只是{}這種形式。

Object.entries()

Object.entries() 方法返回一個給定對象自身可枚舉屬性的鍵值對數組,其排列與使用for...in循環遍歷該對象時返回的順序一致。(區別在于 for-in 循環也枚舉原型鏈中的屬性)

我們知道 Object 是不可直接遍歷的,如果使用Object.entries()則可以完成遍歷任務。

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,China

Object.entries() 返回的是個數組,里面包含了[key,value]的數據,這里也用了解構賦值的方式。

Object.getOwnPropertyDescriptors()

defineProperty 的第三個參數就是描述符(descriptor)。這個描述符包括幾個屬性:

  • value [屬性的值]
  • writable [屬性的值是否可被改變]
  • enumerable [屬性的值是否可被枚舉]
  • configurable [描述符本身是否可被修改,屬性是否可被刪除]
const data = {zhangsan: 60,lisi: 88,wangwu: 90 } // 設置 lisi 不可枚舉 Object.defineProperty(data, 'lisi', {enumerable: false })Object.entries(data).map(([city, temp]) => {console.log(city, temp) }) // zhangsan,60 // wangwu,90// 獲取對象指定屬性的描述符 console.log(Object.getOwnPropertyDescriptor(data, 'lisi')) // {"value":88,"writable":true,"enumerable":false,"configurable":true}// 獲取對象所有屬性的描述符 (getOwnPropertyDescriptors 多了一個s) console.log(Object.getOwnPropertyDescriptors(data)) // { // "zhangsan":{"value":60,"writable":true,"enumerable":true,"configurable":true}, // "lisi":{"value":88,"writable":true,"enumerable":false,"configurable":true}, // "wangwu":{"value":90,"writable":true,"enumerable":true,"configurable":true} // }

總結

以上是生活随笔為你收集整理的【ES8(2017)】Object 扩展 values() / entries() / getOwnPropertyDescriptors()的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。