for/in循环可以遍历对象中所有可枚举的属性(包括自有属性和继承属性),并将属性名称赋给循环变量。
对象继承的内置方法是不可枚举的。
var o ={x:1,y:2}
for(var p in o){
console.log(p)
}
除了for/in外,还可以使用两个函数枚举属性名称,一个是Object.keys(),返回一个由可枚举的自有属性名称组成的数组。另一个是Object.getOwnPropertyNames(),返回所有自有属性,包括不可枚举的和可枚举的。
var p = {name:'Mike', age:18}
p.sayHello = function(){console.log('hello')}
Object.defineProperty(p,'sayHello',{enumerable:false}) //把sayHello设置为不可枚举
Objec.keys(p) //["name", "age"]
Object.getOwnPropertyNames(o) //返回["name", "age", "sayHello"]
网友评论