3-29 关于for in 循环会遍历原型链上的属性的问题

关于for in 循环会遍历原型链上的属性的问题

for in可遍历原型链上扩展的属性,Object.keys() 只遍历自身属性

1.使用 for in 循环遍历对象的属性时,原型链上的所有属性都将被访问:
Object.prototype.say="cgl";   // 修改Object.prototype  
    var person ={ age: 18 };
    for (var key in person) {
        console.log(key, person[key]);//这里用person.key得不到对象key的值,用person[key] 或者 eval("person."+key);
    }   //结果: age 18 
                say cgl
2.只遍历对象自身的属性,而不遍历继承于原型链上的属性,使用hasOwnProperty 方法过滤一下。

复制代码
Object.prototype.say=“gwl”;
var person ={
age: 18
};
for (var key in person) {
if(person.hasOwnProperty(key)){
console.log(key, eval(“person.”+key));
}
} //结果:age 18

你可能感兴趣的:(3-29 关于for in 循环会遍历原型链上的属性的问题)