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.
相关推荐
-
jQuery javaScript捕获回车事件(示例代码)
复制代码 代码如下: function getEnter(obj,evt){if(evt.keyCode == 13){var target = $(":input").not(":radio,select,:reset");for(var i=0;i<target.length;i++){if(target.get(i).name==obj.name){i++;if(i==target.length-1){$(target.get(i)).focus();/
-
javascript获取所有同类checkbox选项(实例代码)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ
-
使用JavaScript实现Java的List功能(实例讲解)
复制代码 代码如下: /** * js模拟java中的List */ var list = new Array(); /** * 添加 * @param {Object} object */function add(object) { list[list.length] = object;} /** * 移除此列表中指定位置上的元素. * @param index 指定位置 * @return 此位置的元素 */function removeIndex(index) { var obje
-
使用javascript实现ListBox左右全选,单选,多选,全请
复制代码 代码如下: <html><head> <meta http-equiv="Content-Type " content="text/html; charset=gb2312 "> <title>list测试</title></head><body> <div style="font-size: 10pt;">
-
javascript去掉前后空格的实例
代码 复制代码 代码如下: function String.prototype.Trim() { return this.replace(/(^/s*)|(/s*$)/g, ""); } // 去掉左右空格 function String.prototype.Ltrim() { return this.replace(/(^/s*)/g, ""); } // 去掉左空格 function String.prototype.Rtrim() {
-
Javascript操作URL函数修改版
总结了一些方法,把它压缩成了一个函数对象,只有几十行代码,使用方法简单明了存为ojbUrl.js 复制代码 代码如下: /* 说明:本代码可自由复制修改并且使用,但请保留作者信息!Author: Kevin WebSite: http://iulog.com/ QQ:251378427JS 操作 URL 函数使用说明:初始化 var myurl=new objURL(); //也可以自定义URL: var myurl=new objURL('http://www.jb51.net'); 读取
-
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);
-
JavaScript使用yield模拟多线程的方法
本文实例讲述了JavaScript使用yield模拟多线程的方法.分享给大家供大家参考.具体分析如下: 在python和C#中都有yield方法,通过yield可以实现很多多线程才能实现的功能. 对javascript有版本要求:JavaScript 1.7 function Thread( name ) { for ( var i = 0; i < 5; i++ ) { Print(name+': '+i); yield; } } //// thread management var thre
-
ASP.NET调用javascript脚本的常见方法小结
1.直接在前台调用 javascript 函数 很简单,在 head 元素之间加入 script 元素,将 type 元素设置为 " text/javascript " 如: 复制代码 代码如下: <head runat="server"> <script type="text/javascript" > function ShowName(str) { alert("您的名字为:("+str+&quo
-
JavaScript弹出窗口方法汇总
本文实例汇总了常用的JavaScript弹出窗口方法,供大家对比参考,希望能对大家有所帮助.详细方法如下: 1.无提示刷新网页: 大家有没有发现,有些网页,刷新的时候,会弹出一个提示窗口,点"确定"才会刷新. 而有的页面不会提示,不弹出提示窗口,直接就刷新了. 如果页面没有form, 则不会弹出提示窗口 如果页面有form表单, a)<form method="post" ...> 会弹出提示窗口 b)<form method=&quo
-
javascript中一些util方法汇总
javascript中一些util方法汇总 /***************原生对象工类方法****************/ /** * 判断非空 * @param obj * @returns {boolean} */ function isEmpty(obj) { if (obj == undefined || obj == null || new String(obj).trim() == '') { return true; } else { return false; } } /**
-
JavaScript使用链式方法封装jQuery中CSS()方法示例
本文实例讲述了JavaScript使用链式方法封装jQuery中CSS()方法.分享给大家供大家参考,具体如下: 主要思路就是:返回this对象,将所获取的操作元素放入一个数组中.在原型中添加拓展方法 <html> <head> <title></title> </head> <body> <div id="one">aa</div> </body> <script typ
-
php实现向javascript传递数组的方法
本文实例讲述了php实现向javascript传递数组的方法.分享给大家供大家参考.具体如下: 这里介绍的PHP进行数组传值给javascript的技巧,此方法适用php5.2以上,php5.2以上自带该类.低于5.2的,请下载json类.json是一种数据传输格式 php代码: $arr=array('1','2','3','4','5'): $str=json_encode($arr); echo "<input type='button' name='insert' value='I
-
C#后台调用前台javascript的五种方法小结
在网上找了找,发现有三种方法可以访问到前台代码: 第一种,OnClientClick (vs2003不支持这个方法) <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="client_click()" OnClick="Button1_Click" /> client_click() 就是javascript的
-
javascript瀑布流布局实现方法详解
本文实例讲述了javascript瀑布流布局实现方法.分享给大家供大家参考,具体如下: html结构: <div id="waterfall"> <div class="mod-box"> <div class="mod-img">...</div> </div> <div class="mod-box"> <div class="mod-
-
javascript笛卡尔积算法实现方法
本文实例讲述了javascript笛卡尔积算法实现方法.分享给大家供大家参考.具体分析如下: 这里可根据给的对象或者数组生成笛卡尔积 //笛卡儿积组合 function descartes(list) { //parent上一级索引;count指针计数 var point = {}; var result = []; var pIndex = null; var tempCount = 0; var temp = []; //根据参数列生成指针对象 for(var index in list)
随机推荐
- JSP由浅入深(8)—— JSP Tags
- Apache 获取真实ip的配置的实现方法
- iOS App开发中UIViewController类的使用教程
- 从别人那拷下来的几点Session使用的经验
- PHP数据集构建JSON格式及新数组的方法
- php array_merge_recursive 数组合并
- C#操作INI配置文件示例详解
- PHP实现递归无限级分类
- Ajax的jsonp方式跨域获取数据的简单实例
- jmeter压力测试工具简介_动力节点Java学院整理
- 获取body标签的两种方法
- JavaScript NodeTree导航栏(菜单项JSON类型/自制)
- ruby线程实现生产者消费者问题示例(队列Queue实现线程同步)
- C#实现获取文本文件的编码的一个类(区分GB2312和UTF8)
- Nginx服务器基础的安全配置与一些安全使用提示
- Win7下如何搭建IIS 7.0服务
- 教你两式妙招强行杀死顽固病毒进程 taskkill
- java 打造阻塞式线程池的实例详解
- php中session与cookie的比较
- Unity3D自定义创建圆锥体