枚举对象属性
获得对象上所有可枚举的实例属性
function Person(){}
Person.prototype.name= 'Niccholas';
Person.prototype.age=29;
Person.prototype.sayName = function (){
console.log(this.name);
}
//获得对象上所有可枚举的实例属性
let keys = Object.keys(Person.prototype);
console.log(keys);//[ 'name', 'age', 'sayName' ]
获得所有实例属性,无论是否可枚举
//列出所有实例属性,无论是否可枚举
keys = Object.getOwnPropertyNames(Person.prototype);
console.log(keys)//[ 'constructor', 'name', 'age', 'sayName' ]
属性枚举的顺序
for-in
循环和Object.keys()
的枚举顺序是不确定的。Object.getOwnPropertyNames()
、Object.getOwnPropertySymbols()
和Object.assign()
的枚举顺序是确定性的。
先以升序枚举数值键,然后以插入顺序枚举字符串和符号键。在对象字面量中定义的键以他们逗号分隔的顺序插入。
let k1 = Symbol('k1');
let k2 = Symbol('k2');
let o={
1:1,
first: 'first',
[k1]:'sym2',
second:'second',
0:0
};
o[k2]='sym2';
o[3]=3;
o.third='third';
o[2]=2;
console.log(Object.getOwnPropertyNames(o));
console.log(Object.getOwnPropertySymbols(o));
- 本文链接:https://archer-lan.github.io/2023/11/20/JS-%E6%9E%9A%E4%B8%BE%E5%AF%B9%E8%B1%A1%E5%B1%9E%E6%80%A7/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。