- for…in方法
- Object.keys
- Object.getOwnPropertyNames
关于对象的可枚举性(enumerable)
var obj = {a: 1,b: 2
}
Object.defineProperty(obj, 'c', {value: 3,enumerable: false
})
复制代码
enumerable设置为false,表示不可枚举,for…in循环、Object.keys()方法和JSON.stringify方法均访问不到该属性。
for…in
能访问到自身以及原型里的可枚举属性
for (var key in obj) {console.log(key)
}
复制代码
如果过滤原型上的属性时,需要使用hasOwnProperty
for(var key in obj) {if(obj.hasOwnProperty(key) {console.log(key)}
}
复制代码
Object.keys()
返回一个数组,包含对象所有的可枚举属性
Object.getOwnPropertyNames()
返回一个数组,包含对象所有属性
Object.getOwnPropertySymbols()
返回一个数组,包含对象自身的所有Symbol属性