文章目录

  • 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()相关推荐

  1. Macbook pro 2016/2017 接入扩展坞时断 WIFI 问题的解决办法

    Macbook pro 2016/2017 接入扩展坞时断 WIFI 问题的解决办法 参考文章: (1)Macbook pro 2016/2017 接入扩展坞时断 WIFI 问题的解决办法 (2)ht ...

  2. 【ES8(2017)】String扩展 padStart / padEnd

    文章目录 1. String.prototype.padStart() 2. String.prototype.padEnd() 1. String.prototype.padStart() 把指定字 ...

  3. 【ES8(2017)】async / await

    async 和 await 是一种更加优雅的异步编程解决方案,是Promise 的拓展. 在我们处理异步的时候,比起回调函数,Promise的then方法会显得较为简洁和清晰,但是在处理多个彼此之间相 ...

  4. ES6, ES7, ES8, ES9 以及 ES10 新特征

    目录 1.  ES6 新特征 (2015) 1.1 module 1.1.1 export 1.1.2 import 1.2 Arrow function (箭头函数) 1.2.1 箭头函数结构 1. ...

  5. 前端面试题集锦——JavaScript

    前端面试题集锦--JavaScript 1.请你谈谈 Cookie 的优缺点 cookie是存储于访问者计算机中的变量 cookie是浏览器提供的一种机制 可以由JavaScript对其进行控制(设置 ...

  6. Es6学习回顾(非完整版)

    本文章主要是基于尚硅谷(https://www.bilibili.com/video/BV1uK411H7on?p=14)讲的知识点中不熟悉的部分进行快速回顾 参考文章:https://es6.rua ...

  7. 现代JavaScript教程---笔记---js部分

    github地址:-js-/笔记.md at master · xiaochuanbbd/-js- · GitHub 教程地址:现代 JavaScript 教程 转数字: NaN的情况: undefi ...

  8. 工作中常用的前端知识总结

    1.使用css写出一个三角形角标 元素宽高设置为0,通过border属性来设置,让其它三个方向的border颜色为透明或者和背景色保持一致,剩余一条border的颜色设置为需要的颜色. div {wi ...

  9. 学习现代 JavaScript 编程的最佳教程

    天天编码 , 版权所有丨本文标题:0.0 学习现代 JavaScript 编程的最佳教程  转载请保留页面地址:http://www.tiantianbianma.com/the-modern-jav ...

最新文章

  1. 腾讯ARC、华中科大联合提出QueryInst,开启基于Query的实例分割新思路
  2. AI 产品经理:别让你的智能对话产品变“智障”
  3. Java NIO 学习笔记(三)----Selector
  4. SPOJ QTREE5 lct
  5. 【牛客 - 368B】选点(dfs序,LIS 或 dfs序 + 树状数组 + 离散化,树状数组求LIS的方法)
  6. python 日志模块封装_Python logging日志模块 封装完善
  7. CCF201503-5 最小花费(30分)
  8. Arduino教程2:如何下载使用Arduino IDE?(附下载地址)
  9. 西部数据硬盘官网查询
  10. 实测分析免费建站软件有哪些?哪个最好?
  11. Server 2008 R2 事件查看器实现日志分析
  12. epub格式电子书剖析之二:OP…
  13. js循环绑定事件问题及解决方法
  14. YTU 问题 : 逆序数字排序
  15. 微服务商城系统(十三)订单、支付流程分析
  16. CCF 201712-4 行车路线(100分)
  17. 还在呼吸致命空气?专业的斐讯空气检测仪,让你生活更健康!
  18. 网络 3.0 路由器概述
  19. 577. 员工奖金 难度:简单
  20. 开发三年的Java程序员,如何摆脱日复一日的CRUD?

热门文章

  1. Storm概念学习系列之Topology拓扑
  2. cookie保存分页参数
  3. Eclipse+PyDev 安装和配置(转)
  4. XNA中三维空间物体的几种旋转方法
  5. 数据可视化最容易被人忽略的四大误区,怪不得我的报告总被老板骂
  6. 什么是Python中的map,reduce和filter?
  7. 分数诚可贵的飞鸽传书2012绿色版
  8. 成为oa的飞鸽传书重要标准应用与开发平台
  9. 这款插件不既有Chrome版【飞秋下载】
  10. 飞鸽传书,去看了下WEBBROWSER的资料