国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 西华县| 锦屏县| 鄢陵县| 沙湾县| 雅安市| 杂多县| 沛县| 朝阳区| 陇南市| 桓台县| 阿巴嘎旗| 河北省| 清远市| 东光县| 舞阳县| 辰溪县| 呈贡县| 泽库县| 章丘市| 大竹县| 五大连池市| 阿图什市| 呼和浩特市| 武穴市| 土默特右旗| 廊坊市| 辉县市| 榆树市| 永川市| 永州市| 绥阳县| 东宁县| 独山县| 霍州市| 民县| 江源县| 西充县| 通化市| 许昌市| 敦煌市| 兴安盟|