forin遍历对象为什么会多出属性,怎么解决?
作者:互联网
forin循环对象的时候会把原型链上所有可枚举的属性都遍历出来。
var obj = {name:"zs"}
Object.prototype.age = 18
for(var k in obj){
console.log(k) // name,age
}
解决办法:
1.使用obj.hasOwnProperty(k)
hasOwnProperty表示是否有自己的属性。这个方法会查找一个对象是否有某个属性,但是不会去查找它的原型链。
for(var k in obj){
if(obj.hasOwnProperty(k)){
console.log(k) // name
}
}
2.使用ES6的forof循环
for(var [k] of Object.entries(obj)){
console.log(k) // name
}
Object.entries(传入一个对象) ------- 会得到一个二维数组,每一项就是对象的键值对所组成的数组。
标签:遍历,obj,name,Object,console,多出,var,forin,log 来源: https://blog.csdn.net/weixin_48384034/article/details/114834933