其他分享
首页 > 其他分享> > forin遍历对象为什么会多出属性,怎么解决?

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