const obj = {
2: 2,
name: "Frenkie",
age: 25,
0: 0,
[Symbol("hello")]: "hello",
102: 102,
26: 26,
1.1:"1.1"
};
obj.__proto__.原型属性 = "hello";
const for_in_arr = [];
for (const key in obj) {
for_in_arr.push(key);
}
//列出自身和原型中的所有可枚举属性,不包含Symbol
console.log("for_in_arr", for_in_arr);//["0","2","26","102","name","age","1.1","原型属性"]
//列出自身可枚举属性,不包含Symbol
console.log("Object.keys()", Object.keys(obj));//["0","2","26","102","name","age","1.1"]
//列出自身全部可枚举属性
console.log("Rflect", Reflect.ownKeys(obj));//["0","2","26","102","name","age","1.1",Symbol("hello")]
- 首先列出类数组索引(非负数)的所有属性,按数值大小升序排列;
- 然后依次列出剩下的字符串名字(包含所有负数和浮点数);
- 最后列出属性名为符号对象类型(Symbol())的属性.