前端必需知道的7种JS对象遍历方法

本文介绍了JavaScript中7种对象遍历方法,包括for...in、Object.keys()、Object.values()、Object.entries()、Object.getOwnPropertyNames(obj)、Object.getOwnPropertySymbols(obj)以及Reflect.ownKeys(obj),详细讲解了它们的定义、语法、应用场景和注意事项,帮助前端开发者更好地理解和使用这些遍历方法。
摘要由CSDN通过智能技术生成

方法总览

对象的遍历方法

一、for…in

定义

1.遍历对象自身的和继承的可枚举的属性(不含Symbol属性)的键名
2.由于对象的属性没有顺序,因此for…in每个属性都会返回一次,但输出的属性顺序不可预测。

语法:

for (var key in obj) {// 执行代码块console.log(obj[key])
} 

这里的var操作符不是必需,但为了保证局部变量,推荐使用上面的写法

代码解析

function Person (name, age) {this.name = namethis.age = agethis.sayHello = function () {console.log('Hello');}
}

Person.prototype.addr = 'The Earth'
Person.prototype.getNum = function() {console.log(1);
}

const tom = new Person('Tom', 18, 'tomato')
console.log(tom); // { name: 'Tom', age: 18, sayHello: [Function] }
console.log(tom.__proto__); // { addr: 'The Earth', getNum: [Function] }

// 会遍历自身和继承的属性和方法
for (var key in tom) {console.log(key + ':' + tom[key]);/*name:Tom, age:18, sayHello:function(){...} , addr:The Earth, getNum:function() {...}*/
} 

for…in用于遍历数组

遍历数组的缺点:

  • 数组的键名是数字,但是for…in循环是以字符串作为键名“0”、“1”、“2”等等。
  • for…in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。
  • 某些情况下,for…in循环会以任意顺序遍历键名。
  • for…in循环主要是为遍历对象而设计的,不适用于遍历数组
const colors = ['red', 'blue', 'yellow']
colors.name = 'overcast'
for (var key in colors) {// 以字符串作为键名console.log(key); // '0', '1', '2', name
}

for (var v of colors) {console.log(v);// red, blue, yellow
} 

使用for…in进行深拷贝

function deepClone (obj = {}) {let resultif (typeof obj !== 'object' || obj =&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值