for of 与for in、数组的新增遍历方法
对象属性遍历
-
for… in 遍历一个都想自由的、继承的、可枚举的、非Symbol的属性,还能遍历原型上的属性,所以for…in拿到的是对象本身及对象原型上的属性
-
for…of遍历可迭代对象
数组遍历
for … in
for in遍历数组,会存在一些问题,比如:
- index索引为字符串型数字,不能直接进行几何运算
var arr = [1,2,3]
for (let index in arr) {
let res = index + 1
console.log(res)
}
//01 11 21
- 遍历顺序有可能不是按照实际数组的内部顺序
- 使用for in会遍历数组所有的可枚举属性,包括原型。
- 如果不想遍历原型方法和属性的话,可以在循环内部判断一下,使用
hasOwnProperty()
方法可以判断某属性是不是该对象的实例属性
var arr = [1,2,3]
Array.prototype.a = 123
for (let index in arr) {
let res = arr[index]
console.log(res)
}
//1 2 3 123
//使用 `hasOwnProperty()` 方法可以判断某属性是不是该对象的实例属性
for(let index in arr) {
if(arr.hasOwnProperty(<