初始化对象:
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;
时间: 2024-10-25 20:08:00