zoukankan      html  css  js  c++  java
  • 深入 javascript 设计模式(迭代器模式)

    我尽量用最少的文字,最少的篇幅,讲明白设计模式的方方面面。
    全文连接

    理解迭代器模式

    按照顺序,从对象中依次取出数据。
    

    上代码:迭代器

    var each = function( ary, callback ){
        for ( var i = 0, l = ary.length; i < l; i++ ){
            // 把下标和元素当作参数传给 callback 函数
            callback.call( ary[i], i, ary[ i ] );
        }
    };
    each( [ 1, 2, 3 ], function( i, n ){
        alert ( [ i, n ] );
    });
    

    上面是一个普通的 for 循环,套一层函数就变成了迭代器?是的,但如果一个对象是JSON的话,怎么遍历呢?

    外部迭代器

    这样的对象该如何遍历?

    let o = {
        0: 1,
        1: 'aa',
        2: 'cc',
        3: 3,
        4: 4,
        length: 5,
    }
    

    这里需要用到外部迭代器

    // 定义外部迭代器,显式调用
    var Interator = function(obj) {
        var current = 0;
        var next = function() {
            current++;
        }
        var isDone = function() {
            return current >= obj.length;
        }
        var getCurrent = function() {
            return obj[current];
        }
        return {
            next,
            isDone,
            getCurrent,
        }
    }
    
    var interator = Interator(o)
    while (interator.isDone() === false) {
        // 依次输出 1, aa, cc, 3, 4
        console.log(interator.getCurrent())
        interator.next()
    }
    

    小结

    简单来说,迭代器模式就是提供一种顺序访问一个聚合对象中的各个元素。

    迭代器的思想一定不是局限于数组的,未来还有更多的使用场景等你来探索。

    [参考1] 《javascript 设计模式与开发实践》

  • 相关阅读:
    2008年8月1日21世纪首次日全食奇观
    7.3午饭记
    简单漂亮的导航栏效果
    浮动居中float:center
    图片垂直居中的CSS技巧
    谷歌Chrome浏览器发布
    满江红.中秋寄远
    寄中秋月下独酌
    春江花月夜
    开始锻炼身体
  • 原文地址:https://www.cnblogs.com/shixinglong/p/13178147.html
Copyright © 2011-2022 走看看