javaScript学习笔记——遍历对象中属性的方法

遍历对象的属性一共有5中方法

1. for…in

for…in循环遍历对象自身和继承的可枚举属性【对象原型中enumerable的值为true的属性】。(不含Symbol属性)

总的来说,操作引入继承属性会让问题复杂化,大多时候,我们只关心对象自身的属性。所以尽量不要用for…in循环,而用Object.keys()代替

let obj ={[Symbol(1)]:0,b:0,10:0,2:0,a:0,[Symbol(2)]:0};
for(let o in obj){
    console.log("for..in",o);
}

运行结果:
javaScript学习笔记——遍历对象中属性的方法_第1张图片

2.Object.keys()

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

var obj ={[Symbol(1)]:0,b:0,10:0,2:0,a:0,[Symbol(2)]:0};
console.log("object.keys",Object.keys(obj))
// object.keys (4) ["2", "10", "b", "a"]

3.Object.getOwnPropertyNames(obj)

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

var obj ={[Symbol(1)]:0,b:0,10:0,2:0,a:0,[Symbol(2)]:0};
console.log("Object.getOwnPropertyNamess",Object.getOwnPropertyNames(obj))
//object.getOwnPropertyNamess (4) ["2", "10", "b", "a"]

4.Object.getOwnPropertySymbols(obj)

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

var obj ={[Symbol(1)]:0,b:0,10:0,2:0,a:0,[Symbol(2)]:0};
console.log("Object.getOwnPropertySymbols",Object.getOwnPropertySymbols(obj))
//Object.getOwnPropertySymbols [Symbol(1), Symbol(2)]

5. Reflect.ownKeys(obj)

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

以上五种方法遍历出来的属性按数字-》字符串-》symbol从左到右的优先级排序,其中都是数字按数字大小排,都是字符串或者symbol则按生成的时间排序。

Reflect.ownKeys({[Symbol()]:0,b:0,10:0,2:0,a:0});
//["2", "10", "b", "a", Symbol(1), Symbol(2)]

你可能感兴趣的:(ES6,javascript学习笔记)