[Java教程]遍历对象属性


初始化对象:

var person = function(name){ this._name = name;}var grand = function(){ this.city = "sh";}grand.prototype.age = 18; person.prototype = new grand();

1. for in 不仅能遍历自身的可枚举属性,还遍历原型对象中的可枚举属性var p = new person();for(var key in p){ console.log(key)}

结果:

_name

city

age

2. Object.keys(object); 遍历对象自身的可枚举属性var keys = Object.keys(p);for(var key in keys){ console.log(key+":"+keys[key])}

结果:

0:_name

3.object.hasOwnProperty(propertyName); 检测propertyName是否是object的自身属性

即使属性是不可遍历的,只要它存在于object对象中,就返回trueObject.defineProperty(p,"home",{ value:"nanjing", enumerable:false});

console.log(p.hasOwnProperty("home")); // true

4.object.propertyIsEnumerable(propertyName); //检测propertyName是否可遍历

propertyName必须是自身的属性,如果属性存在于原型对象上,即使属性可遍历,也返回falseObject.defineProperty(p,"home",{ value:"nanjing", enumerable:true});console.log(p.hasOwnProperty("home")); // trueconsole.log(p.propertyIsEnumerable("age")); //false

"home"是对象自身属性,且可遍历

"age"存在于原型对象上,返回false;