JavaScript重写Symbol(Symbol.iterator)实现迭代器(2)

重写数组for…of底层用的迭代器

for…of 底层用Symbol(Symbol.iterator)迭代器
…arr 底层用Symbol(Symbol.iterator)迭代器
示例图
在这里插入图片描述
代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>对象遍历重写iterator接口2</h1>
</body>
<script>
    //第二步重写Symbol(Symbol.iterator) 这里发现是使用done来判断是否结束的,done为true是为结束了
    function iteratorUtil() {
       let index = -1;
       let _this = this;
        return {
            next() {
                let len = _this.length;
                //console.log(len);
                index++;
                //console.log(index);
                return index < len ? {
                    value: _this[index],
                    done: false
                } : {
                    value: _this[index],
                    done: true
                };
            }
        };
    }

    Array.prototype[Symbol.iterator] = iteratorUtil;
    var arr = [1, 2, 3, 4];
    console.log(arr);
    for (const item of arr) {
        console.log(item);
    }

    console.log(...arr);
</script>

</html>

猜你喜欢

转载自blog.csdn.net/qq_38188047/article/details/106583616