javascript实现yield的方法

 更新时间:2013年11月06日 16:43:16   作者:  
这篇文章介绍了javascript实现yield的方法,有需要的朋友可以参考一下

没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式.

复制代码 代码如下:

       var Iterator = function (fn) {
            var coroutine = null;
            var cofn_this = null;
            var yield = function() {
                coroutine.apply(cofn_this, arguments);
            }
            // support IE.
            // NOTE: IE eval("function(){}") does not return a function object.
            eval('fn = ' + fn.toString());
            return function(cofn, cothis){
                coroutine = cofn;
                cofn_this = cothis;
                return fn.apply(this)
            };
        }
        Array.prototype.forEach = new Iterator(function () {
            for (var i = 0; i < this.length; i ++) {
                yield(this[i])
            }
        });
        // example.
        this.display = window.alert;
        var A = [1,2,3,4,5];
        A.forEach(function(it){
            this.display(it)
        }, this);

其中有一个技巧:

        fn = eval(fn.toString())

        用于将fn中的引用绑定到当前的上下文中,这样fn中的yield才会引用到我们定义的yield函数。

        注意一下,如果你需要在coroutine里访问其他this上下文,需要向iterator传递进去, 如 example.

相关文章

  • JavaScript判断浏览器类型的方法

    JavaScript判断浏览器类型的方法

    这篇文章主要介绍了JavaScript判断浏览器类型的方法,可实现针对IE、火狐、谷歌等浏览器的判断,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • js中键盘事件实例简析

    js中键盘事件实例简析

    这篇文章主要介绍了js中键盘事件,以一个较为简单的实例形式分析了js响应键盘事件的操作技巧,需要的朋友可以参考下
    2015-01-01
  • js实现音乐播放控制条

    js实现音乐播放控制条

    这篇文章主要为大家详细介绍了js实现音乐播放控制条,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • JavaScript中的变量提升和函数提升

    JavaScript中的变量提升和函数提升

    这篇文章主要介绍了JavaScript中的变量提升和函数提升,在js中对变量进行操作后打印值经常会出现undefined的现象。其实原因是因为js中有一个叫做变量提升的功能
    2022-07-07
  • momentjs使用详细说明

    momentjs使用详细说明

    这篇文章主要介绍了momentjs详细使用说明,使用 Moment.js 可以轻松地获取上周、上月和前三个月的起始和结束时间,在示例中,我们传入了 '2023-07-15',并将返回的日期信息存储在 dateInfo 变量中,然后将其打印到控制台上,需要的朋友可以参考下
    2023-07-07
  • JavaScript设置获取和设置属性的方法

    JavaScript设置获取和设置属性的方法

    这篇文章主要介绍了JavaScript设置获取和设置属性的方法,学会使用getAttribute、setAttribute的用法,需要的朋友可以参考下
    2015-03-03
  • 原生javascript实现图片无缝滚动效果

    原生javascript实现图片无缝滚动效果

    这篇文章主要介绍了原生javascript实现图片无缝滚动效果的相关资料,需要的朋友可以参考下
    2016-02-02
  • Js操作树节点自动折叠展开的几种方法

    Js操作树节点自动折叠展开的几种方法

    这篇文章主要介绍了Js操作树节点自动折叠展开的几种方法,需要的朋友可以参考下
    2014-05-05
  • 基于Web Audio API实现音频可视化效果

    基于Web Audio API实现音频可视化效果

    这篇文章主要介绍了基于Web Audio API实现音频可视化效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • JavaScript组件开发之输入框加候选框

    JavaScript组件开发之输入框加候选框

    本文给大家分享基于js组件开发的输入框加候选框的实例代码,代码简单易懂,非常不错,具有参考借鉴价值,需要的的朋友参考下
    2017-03-03

最新评论