整理遍历对象属性一些方法
1 for…in
for…in
循环遍历对象自身和继承的可枚举属性(不含Symbol属性)
let obj = {foo1:1,foo2:2,foo3:3}
for( let attr in obj ){
console.log(attr)//foo1 foo2 foo3
}
2 Object.keys(obj)
Object.keys
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。
let obj = {foo1:1,foo2:2,foo3:3}
Object.keys(obj);//["foo", "foo2", "foo3"]
3 Object.getOwnPropertyNames(obj)
可翻译成 获取本身属性名字
Object.getOwnPropertySymbols
返回一个数组,包含对象自身的所有 Symbol 属性的键名。
let obj = {foo1:1,foo2:2,foo3:3}
Object.getOwnPropertyNames(obj);//["foo", "foo2", "foo3"]
4 Reflect.ownKeys(obj)
Reflect.ownKeys
返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。
let obj = {foo1:1,foo2:2,foo3:3}
Reflect.ownKeys(obj);//["foo", "foo2", "foo3"]
5 Object.getOwnPropertySymbols(obj)
Reflect.ownKeys
返回一个数组,包含对象自身的(不含继承的)所有键名,不管键名是 Symbol 或字符串,也不管是否可枚举。
var s1 = Symbol("foo");
var s2 = Symbol("bar");
let obj1 = {
[s1]:1,
[s2]:2,
}
Object.getOwnPropertySymbols(obj1)//[Symbol(foo), Symbol(bar)]
本文根据阮一峰教程整理 https://es6.ruanyifeng.com/#docs/object