国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

javascript實(shí)現(xiàn)yield的方法

2024-05-06 15:54:15
字體:
供稿:網(wǎng)友
這篇文章介紹了javascript實(shí)現(xiàn)yield的方法,有需要的朋友可以參考一下

沒想到代碼一次測試成功.~~只不過是FF下面,修改一下支持IE了。由于IE不認(rèn)function表達(dá)式.

復(fù)制代碼 代碼如下:


       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中的引用綁定到當(dāng)前的上下文中,這樣fn中的yield才會引用到我們定義的yield函數(shù)。

        注意一下,如果你需要在coroutine里訪問其他this上下文,需要向iterator傳遞進(jìn)去, 如 example.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 黄骅市| 河间市| 大石桥市| 上饶县| 锡林郭勒盟| 太康县| 肥乡县| 龙井市| 齐齐哈尔市| 湖北省| 仙居县| 景德镇市| 登封市| 东山县| 晋州市| 当雄县| 大新县| 平阴县| 宜良县| 齐齐哈尔市| 三原县| 永春县| 三江| 常山县| 普定县| 晋城| 新野县| 彝良县| 教育| 遂昌县| 泰宁县| 绍兴市| 信丰县| 盐源县| 博罗县| 永泰县| 搜索| 罗定市| 鹤岗市| 昌吉市| 乐都县|