手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >javascript实现yield的方法
javascript实现yield的方法
摘要:没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式.复制代码代码如下:varIterato...

没想到代码一次测试成功.~~只不过是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实现yield的方法】相关文章:

javascript实现模拟时钟的方法

JavaScript实现仿网易通行证表单验证

javascript实现Table排序的方法

javascript实现树形菜单的方法

js实现点击链接后延迟3秒再跳转的方法

JavaScript判断图片是否已经加载完毕的方法汇总

JavaScript中用于四舍五入的Math.round()方法讲解

javascript验证邮件地址和MX记录的方法

javascript实现动态改变层大小的方法

JavaScript中的unshift()方法的使用

精品推荐
分类导航