关于遍历对象的属性的一点新认识,如何只遍历对象自身的属性
平时想要遍历一个对象时一般会采用for/in语句,通过for/in语句可以快速地拿到对象的key和value值
var obj = {name:'zhang',age:24}; for(var key in obj){ console.log(key); //name age console.log(obj[key]); //zhang 24 }
可是,使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问:
function Pro(name, age){ this.name = name; this.age = age; } Pro.prototype.hobby = '羽毛球'; Pro.prototype.qq = '123'; var pro1 = new Pro('wan',24); console.log(pro1); for(var p in pro1){ console.log(p); //会打印所有属性,包含原型链上的 }
可是,如果要只遍历对象自身的属性呢,今天刚刚看到这个问题时,我一下子没想起来,可以利用对象的hasOwnProperty属性做一个筛选
for(var p in pro1){ if (pro1.hasOwnProperty(p)) { console.log(p); //这样,打印的属性就只包含对象自己的了 } }