ES6入门系列 ----- 对象的遍历
工作中遍历对象是家常便饭了,遍历数组的方法五花八门, 然而很多小伙伴是不是和我之前一样只会用for ...in....
来遍历对象呢, 今天给大家介绍五种遍历对象属性的方法:
- 1, 最常用的for in
- 它可以便利对象本身及其继承自原型上的可枚举属性,
- 过滤掉原型上的属性可以用hasOwnProperty(属性名)来判断是否是本身的属性,
- 对象的每一个属性都有它的描述,可以用Object.getOwnPropertyDescriptors(对象, 属性名)来查看对象的某个属性的描述,可以知道其是否是可枚举, 可写,可配置
- 2, Object.keys(obj)
- 是不是有点眼熟,和数组的keys方法很像, 返回一个数组
- 这个数组包含自身的所有可枚举属性,不包含原型链上的属性以及Symbol属性
- 这个数组是可迭代的,也就是部署了iterator接口,可以用for...of遍历
- 3, Object.getOwnPropertyNames(obj)
- 返回一个数组
- 包含自身的所有属性,包括不可枚举的属性,但不包括Symbol属性
- 4 Object.getOwnPropertySymbols(obj)
- 返回一个数组
- 包含自身的所有Symbol属性
- 5 Reflect.ownKeys(obj)
- 返回一个数组
- 一般不会用, 包含自身的所有属性, 不管是否为Symbol属性, 也不管是否可枚举
插播 : Symbol 是 es6 新增的一种基本数据类型, es5的基本数据有5种, 所以新增后有6种基本数据类型
在Symbol出现之前,对象的属性名只能为字符串, 容易造成属性名冲突, 而Symbol 是独一无二的,
所以用Symbol 作为属性名一定不会冲突。
格式 const s = Symbol() , 切记前面不用加new, 因为new 操作符会返回一个对象,而Symbol是
原始值。Symbol() === Symbol() // false.
拓展题: typeof 1234n = ?
ES6入门系列 ----- 对象的遍历的更多相关文章
- es6 快速入门 系列 —— 对象
其他章节请看: es6 快速入门 系列 对象 试图解决的问题 写法繁杂 属性初始值需要重复写 function createPeople(name, age){ // name 和 age 都写了 2 ...
- ES6入门系列二(数值的扩展)
ES6 在 Number对象上新增了很多方法 1 . Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') === tr ...
- ES6入门系列 ----- Reflect
Reflect 是ES6 为了操作对象而提供的新的API, 目的是: 将Object 上一些明显属于语言内部的方法,比如 Object.defineProperty 放到 Reflect对象上 ...
- ES6入门系列三(特性总览下)
0.导言 最近从coffee切换到js,代码量一下子变大了不少,也多了些许陌生感.为了在JS代码中,更合理的使用ES6的新特性,特在此对ES6的特性做一个简单的总览. 1.模块(Module) --C ...
- ES6 入门系列 - 函数的扩展
1函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法. function log(x, y) { y = y || 'World'; console.log( ...
- ES6入门系列四(测试题分析)
0.导言 ES6中新增了不少的新特性,来点测试题热热身.具体题目来源请看:http://perfectionkills.com/javascript-quiz-es6/. 以下将一题一题来解析what ...
- ES6入门系列一(基础)
1.let命令 Tips: 块级作用域(只在当前块中有效) 不会变量提升(必须先申明在使用) 让变量独占该块,不再受外部影响 不允许重复声明 总之:let更像我们熟知的静态语言的的变量声明指令 ES6 ...
- ES6 入门系列 - let 和 const 命令
let命令 基本用法 ES6新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. { let a = ; ; } a // ReferenceEr ...
- ES6入门之对象扩展
ES5对象(超类)原有: 属性:construct构造函数 方法: object.hasOwnProperty( propertyName ) //检测是否有一个本地的属性而不是继承的,返回boole ...
随机推荐
- Rust中的结构体及方法语法
这个可以和类作比较,或是go当中的方法比较. #[derive(Debug)] struct Rectangle { width: u32, height: u32, } impl Rectangle ...
- 201871010117-石欣钰《面向对象程序设计(java)》第七周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh/p ...
- hbase配置hdfs的HA之后需要修改的路径
hbase-site.xml中配置了hdfs的一个路径 <property> <name>hbase.rootdir</name> <value>hdf ...
- InfoQ一波文章:AdaSearch/JAX/TF_Serving/leon.bottou.org/Neural_ODE/NeurIPS_2018最佳论文
和 Nested Partition 有相通之处? 伯克利提出 AdaSearch:一种用于自适应搜索的逐步消除方法 在机器学习领域的诸多任务当中,我们通常希望能够立足预先给定的固定数据集找出问题的答 ...
- ABP 相关基础知识
好文章: https://www.cnblogs.com/1zhk/p/5268054.html 关键字:Internal 限定的是只有在同一程序集中可访问,可以跨类 关键字:volatile 一个变 ...
- Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) D mt19937
https://codeforces.com/contest/1040/problem/D 用法 mt19937 g(种子); //种子:time(0) mt19937_64 g(); //long ...
- [LeetCode] 305. Number of Islands II 岛屿的数量之二
A 2d grid map of m rows and n columns is initially filled with water. We may perform an addLand oper ...
- JavaScript (JS)常用方法
被按的按键的 unicode 是? <html> <head> <script type="text/javascript"> function ...
- 一步步从零开始用 webpack 搭建一个大型项目
开篇 很多人都或多或少使用过 webpack,但是很少有人能够系统的学习 webpack 配置,遇到错误的时候就会一脸懵,不知道从哪查起?性能优化时也不知道能做什么,网上的优化教程是不是符合自己的项目 ...
- oracle--oracle18C环境配置(一)
一,硬件配置检查 使用以下命令确定服务器上的物理RAM大小: # grep MemTotal /proc/meminfo 如果系统中安装的物理RAM的大小小于所需的大小,则必须先安装更多内存,然后再继 ...