JavaScript实现Iterator模式实例分析
本文实例讲述了JavaScript实现Iterator模式的方法。分享给大家供大家参考。具体分析如下:
经常在网上看到有不少JS设计模式的示例。这里写一下JavaScript实现Iterator模式的方法,记录在此,仅作备忘:
<!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 content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>无标题 1</title>
</head>
<body>
<script type="text/javascript" language="javascript">
///@定义一个迭代器对象
function Iterator(arr)
{
this.obj=arr;
this.length=this.obj.length;
this.index=0; //从前往后
}
Iterator.prototype=
{
current:function()
{
return this.obj[this.index-1];
},
first:function()
{
return this.obj[0];
},
last:function()
{
return this.obj[this.length-1];
},
hasNext:function()
{
this.index=this.index+1;
if(this.index>this.length || null==this.obj[this.index-1])
return false;
return true;
}
}
Array.prototype.createIterator=function()
{
return new Iterator(this);
}
var test=['abc1','abc2','abc3'];
var iter=test.createIterator();
while(iter.hasNext())
{
var tempArr=iter.current();
alert(tempArr);
}
</script>
</body>
</html>
希望本文所述对大家的javascript程序设计有所帮助。
相关推荐
-
java使用listIterator逆序arraylist示例分享
思路分析:要逆序遍历某个列表,首先要获得一个ListIterator对象,利用for()循环,以ListIterator类的hasNext()方法作为判断条件,通过循环执行ListIterator类的next()方法将游标定位到列表结尾,然后在另一个for循环中,以ListIterator类的hasPrevious()方法作为判断条件,通过ListIterator类的previous()方法逆序输出列表中的元素. 代码如下: 复制代码 代码如下: import java.util.ArrayLi
-
小议JavaScript中Generator和Iterator的使用
一说到 Generator,大家就会扯上异步之类是话题.这显然是被一些奇奇怪怪的东西带坏了.与 Generator 关系密切的应该是 Iterator 才对,拿 Generator 来处理异步也许是一些 C# 程序员才会想的事.当然这种用法确实有一套完整的东西,只是我个人不喜欢而已. 非要把 Generator 和异步联系上,唯一的点就是 next 的调用时机.因为 next 可以异步地调用,所以 Generator 才得以被异步地滥用. 但我觉得 next 这个方法虽然可以异步调用,但正确的使
-
java集合迭代器Iterator中的remove陷阱
package TestList; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.TreeSet; public class TestIterator { /** * @param args */ public static void main(String[] args) { // TODO Auto-gen
-
java使用iterator遍历指定目录示例分享
可以遍历指定目录(一个或多个)及其所有子文件,用Iterator实现 复制代码 代码如下: package archiver.util; import java.io.File;import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List; public class FileIterator implements Iterator<File>, Iterabl
-
JavaScript实现Iterator模式实例分析
本文实例讲述了JavaScript实现Iterator模式的方法.分享给大家供大家参考.具体分析如下: 经常在网上看到有不少JS设计模式的示例.这里写一下JavaScript实现Iterator模式的方法,记录在此,仅作备忘: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quo
-
JavaScript代码复用模式实例分析
任何编程都提出代码复用,否则话每次开发一个新程序或者写一个新功能都要全新编写的话,那就歇菜了,但是代码复用也是有好要坏,接下来的两篇文章我们将针对代码复用来进行讨论,第一篇文避免篇,指的是要尽量避免使用这些模式,因为或多或少有带来一些问题:第二排是推荐篇,指的是推荐大家使用的模式,一般不会有什么问题. 模式1:默认模式 代码复用大家常用的默认模式,往往是有问题的,该模式使用Parent()的构造函数创建一个对象,并且将该对象赋值给Child()的原型.我们看一下代码: 复制代码 代码如下: fu
-
Java设计模式之静态代理模式实例分析
本文实例讲述了Java设计模式之静态代理模式.分享给大家供大家参考,具体如下: 代理模式,可以通过代理可以在原来的基础上附加一些其他的操作.静态代理模式相对比较简单无需再程序运行时动态的进行代理. 静态代理模式的角色: ① 抽象角色:真实对象和代理对象的共同接口.其中声明真实对象和代理对象需要做的事. ② 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用. ③ 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作. 下面提
-
js正则表达式中的单行模式与多行模式实例分析
本文实例分析了js正则表达式中的单行模式与多行模式.分享给大家供大家参考.具体如下: js正则表达式是不支持单行模式的.也就是说,不能把某段内容(有换行),采用模式修正符来处理,使整段内容当成一行来处理. 正则多行替换,需要添加/mg模式增强符. <html> <head> <script type="text/javascript"> //正则替换链接,链接有换行 function t1(){ var con = document.getEleme
-
Javascript访问器属性实例分析
本文实例分析了Javascript 访问器属性的用法,分享给大家供大家参考.具体分析如下: 这个和构造函数的意思有点像,但功能又不同,他可以让两个属性建立关联,通过修改一个属性来改变另一个属性. 复制代码 代码如下: var book = { _year:2004, edition: 1 }; Object.defineProperty(book, "year", { get: function() { return this._year;
-
JavaScript事件委托技术实例分析
本文实例分析了JavaScript事件委托技术.分享给大家供大家参考.具体分析如下: 如果一个整体页面里有大量的按钮.我们就要为每一个按钮绑定事件处理程序.这样就会影响性能了. 首先每个函数都是对象,对象就会占用很多内存.内存中的对象越多,性能就越差. 其次,dom访问次数增多,就会导致延迟加载页面.事实上,从如何来利用好事件处理程序,还是有很好的解决方案的. 事件委托: 对事件处理程序过多的问题解决的方案就是事件委托技术. 事件委托技术利用了事件冒泡.只需指定一个事件处理程序. 我们可以为某个
-
JavaScript对象创建模式实例汇总
本文实例总结了JavaScript对象创建模式.分享给大家供大家参考,具体如下: 在JavaScript中创建对象是很容易的,可以使用对象字面量或者构造函数.常用的创建对象的模式有以下几种: 一. 工厂模式 工厂模式抽象了具体对象的过程,用函数来封装以特ing接口创建对象的细节. 如下: function createAnimal(name, age) { var o = new Object(); o.name = name; o.age = age; o.sayName = function
-
JavaScript中继承用法实例分析
本文实例分析了JavaScript中继承的用法.分享给大家供大家参考.具体如下: // define the Person Class function Person() {} Person.prototype.walk = function(){ alert ('I am walking!'); }; Person.prototype.sayHello = function(){ alert ('hello'); }; // define the Student class function
-
JavaScript常见继承模式实例小结
本文实例总结了JavaScript常见继承模式.分享给大家供大家参考,具体如下: JavaScript中并没有传统的面向对象语言中的类的概念,但是却实现了特殊的继承机制. (阅读此文您首先需要知道原型的知识) 先来说说第一种继承方式,原型链继承. 一. 原型链继承 所谓原型链继承,就是让父类的一个实例作为子类的原型. 即 : parentInstance = new Parent(); child.prototype = parentInstance; 这样,在创建子类的实例时,子类实例的__p
-
JavaScript设计模式之代理模式实例分析
本文实例讲述了JavaScript设计模式之代理模式.分享给大家供大家参考,具体如下: 代理模式的定义,代理是一个对象(proxy)用它来控制目标对象的访问.为此他要是先与目标对象相同的接口,但是他不同于装饰者模式,它对目标对象不进行任何修改,它的目的在于延缓"复杂"对象的初始化时间.这样可以在用到这个目标对象的时候再初始化他(对于单例来讲更是重要). 代理模式有两种分类: (1)普通代理 (2)惰性代理 具体看下面的例子 第一,普通代理模式 步骤一,接口检验文件的引用 //定义一个静
随机推荐
- 详解Centos7 下建立 Docker 桥接网络
- Shell脚本中实现更新PHP5
- javascript常用函数归纳整理
- DB2编程序技巧 (五)
- cscript adsutil.vbs 设置iis参数提示拒绝访问的解决方法
- javascript loadScript异步加载脚本示例讲解
- JavaScript制作简单的框选图表
- javascript的replace方法结合正则使用实例总结
- 使用Eclipse配置android开发环境教程
- Android 开发环境配置问题
- 用python写asp详细讲解
- 如何在Python中编写并发程序
- 八、设置HTTP应答头
- java双向循环链表的实现代码
- Java的Hibernate框架中用于操作数据库的HQL语句讲解
- python检测某个变量是否有定义的方法
- JQuery实现动态添加删除评论的方法
- C++求斐波那契数的实例代码
- Less 安装及基本用法
- JS实现获取当前所在周的周六、周日示例分析
