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条件式和匹配条件的技巧(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • 移动端touch拖动和click事件冲突问题解决

    移动端touch拖动和click事件冲突问题解决

    这篇文章主要为大家介绍了移动端touch拖动和click事件冲突问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 微信小程序左滑动显示菜单功能的实现

    微信小程序左滑动显示菜单功能的实现

    这篇文章主要介绍了微信小程序左滑动显示菜单功能的实现,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • javascript高级的文件目录排序代码

    javascript高级的文件目录排序代码

    这几天在做一个文件管理的模块,里面有排序的功能,产品经理看了说希望能做出更加智能的文件排序功能,就像是win7的名称排序一样,主要就是文件名中的数字会按大小排序,而不是直接按ascii码 ,这两天晚上没事,就先写了这个排序方法,下个版本中就可以用上了
    2010-08-08
  • 微信小程序如何调用图片接口API并居中显示

    微信小程序如何调用图片接口API并居中显示

    这篇文章主要介绍了微信小程序如何调用图片接口API并居中显示,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • 浅析JSONP技术原理及实现

    浅析JSONP技术原理及实现

    这篇文章主要介绍了浅析JSONP技术原理及实现 的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 浅谈JavaScript 覆盖原型以及更改原型

    浅谈JavaScript 覆盖原型以及更改原型

    下面小编就为大家带来一篇浅谈JavaScript 覆盖原型以及更改原型。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随过来看看吧
    2016-08-08
  • JavaScript手写一个前端存储工具库

    JavaScript手写一个前端存储工具库

    在项目开发的过程中,为了减少提高性能,减少请求,开发者往往需要将一些不易改变的数据放入本地缓存中。本文就来用JavaScript手写一个前端存储工具库,希望对大家有所帮助
    2023-02-02
  • javascript定时保存表单数据的代码

    javascript定时保存表单数据的代码

    我相信有不少TX用过QQ或163的邮箱吧?他们中有一个比较有用且有趣的功能,如果您在编写邮件,那在固定一个时间频率内,它会自动将您的邮件内容保存起来,以免丢失。
    2011-03-03
  • JavaScript中判断变量是数组、函数或是对象类型的方法

    JavaScript中判断变量是数组、函数或是对象类型的方法

    这篇文章主要介绍了JavaScript中判断变量是数组、函数或是对象类型的方法,需要的朋友可以参考下
    2015-02-02

最新评论