最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

javascript实现yield的方法_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:15:11
文档

javascript实现yield的方法_javascript技巧

javascript实现yield的方法_javascript技巧:没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式. 代码如下: var Iterator = function (fn) { var coroutine = null; var cofn_this = null; var yield = function() { c
推荐度:
导读javascript实现yield的方法_javascript技巧:没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式. 代码如下: var Iterator = function (fn) { var coroutine = null; var cofn_this = null; var yield = function() { c


没想到代码一次测试成功.~~只不过是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实现yield的方法_javascript技巧:没想到代码一次测试成功.~~只不过是FF下面,修改一下支持IE了。由于IE不认function表达式. 代码如下: var Iterator = function (fn) { var coroutine = null; var cofn_this = null; var yield = function() { c
推荐度:
标签: 技巧 的方法 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top