使用for in语句循环枚举对象属性时,会将该对象的原型属性也显示出来
例子:
var man = {
name : "kong",
age : "17",
sex : "man"
};
//将一个方法添加到所有对象上
if(typeof Object.prototype.aa === "undefined"){
Object.prototype.aa = function(){
alert("aaa");
}
}
for(var i in man){
console.log(i + ":" + man[i]); //会将原型属性aa也循环出来
}
//使用hasOwnProperty过滤原型属性
for(var i in man){
if(man.hasOwnProperty(i)){
console.log(i + ":" + man[i]);
}
}
//第二种方法过滤原型属性
for(var i in man){
if(Object.prototype.hasOwnProperty.call(man,i)){
console.log(i + ":" + man[i]);
}
}