for...of

1,for...of循环

原生JS引入的大量的循环,对于直接遍历数据集不太友好

ES6引入的for..of循环,可以很方便的遍历数据

注:只是提高 了处理效率,并没有对遍历过程中对于单个数据的操作优化

var arr = ['admin', 'root', 'xiaoli', 'old-wang']
// // 1.for
// for(var i = 0; i < arr.length; i++){
//     console.log(arr[i])
// }
// // 2. while、do-while
// // ...
// // 3. for..in
// for(var index in arr){
//     console.log(arr[index])
// }
// 4. for..of
for(var name of arr){
    console.log(name)
}

2、循环原理--迭代器

字符串对象->包含Symbol类型的迭代器属性,可以用for..of迭代

数值对象->不包含Symbol类型的迭代属性,不能使用for..of进行迭代

---不能进行迭代的使用自定义迭代器,达到创建的对象支持for..of循环遍历

class Person {

    constructor(name, age, gender, addr, phone) {
        this.name = name
        this.age = age
        this.gender = gender
        this.addr= addr
        this.phone = phone
    }

    [Symbol.iterator]() {
        let values = Object.values(this) // 获取当前对象属性值
        let index = 0
        // 迭代器函数固定返回值语法
        return {
            next() {
                if(index < values.length) {
                    // 返回的数据:固定语法{value: 值, done:是否继续迭代}
                    return { value: values[index++], done:false}
                } else {
                    return { value: values[index++], done:true}
                }
            }
        }
    }   
}
// 创建对象
var tom = new Person("汤姆", 19, "男", "郑州", "18899007766")

// 问题:如何使用for..of对tom对象进行迭代?
for(var attr of tom) {
    console.log(attr)
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值