ES6 JavaScript遍历对象属性的所有方法汇总

ES6中一共有5种方法可以遍历对象的属性。

  • for ... in

for ... in循环遍历对象自身的和继承的可枚举属性(不含Symbol属性)。

 

<script>
			
			var a = {
				name: 'xutong',
				age: 7
			}
			
			Object.prototype.sex = 'male'
			
			for(let prop in a) {
				console.log(prop)
			}
            //会遍历到sex属性
			
		</script>
  • Object.keys(obj)

​​​​​​​Object.keys返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含Symbol属性)。 

var a = {
				name: 'xutong',
				age: 7
			}
			
			Object.prototype.sex = 'male'
			
			console.log(Object.keys(a))
            //['name', 'age'] 不包含sex属性
  • Object.getOwnPropertyNames(obj)

​​​​​​​Object.getOwnPropertyNames返回一个数组,包括对象自身的所有属性(不含Symbol属性,但是包括不可枚举属性)。

  • Object.getOwnPropertySymbols(obj)

​​​​​​​Object.getOwnPropertySymbols返回一个数组,包括对象自身的所有Symbol属性。 

  • Reflect.ownKeys(obj)

 Reflect.ownKeys返回一个数组,包括对象自身的所有属性,不管属性名是Symbol还是字符串,也不管是否可枚举。

以上五种方法遍历对象的属性时都遵守同样的属性遍历次序规则。

  1. 首先遍历所有属性名为数值的属性,按照数字排序;
  2. 其次遍历所有属性名为字符串的属性,按照生成时间排序;
  3. 最后遍历所有属性名为Symbol值的属性,按照生成时间排序。 

在此感谢阮一峰老师的总结与分享! 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值