遍历对象属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遍历对象属性相关的知识,希望对你有一定的参考价值。
初始化对象:
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对象中,就返回true
Object.defineProperty(p,"home",{ value:"nanjing", enumerable:false });
console.log(p.hasOwnProperty("home")); // true
4.object.propertyIsEnumerable(propertyName); //检测propertyName是否可遍历
propertyName必须是自身的属性,如果属性存在于原型对象上,即使属性可遍历,也返回false
Object.defineProperty(p,"home",{ value:"nanjing", enumerable:true }); console.log(p.hasOwnProperty("home")); // true console.log(p.propertyIsEnumerable("age")); //false
"home"是对象自身属性,且可遍历
"age"存在于原型对象上,返回false;
以上是关于遍历对象属性的主要内容,如果未能解决你的问题,请参考以下文章