时间: 2021-07-31 作者:daque
collection对象 - 在perl中命名 - 组合数组 - 提供了一种用于在内存中保存和提取数据项的方法;该方法基于“值”对数据结构。您可以根据数据项的关键字插入和提取,并且每个数据项的关键字是唯一的,并且它们不会重复。 “关键字 - 数字”特别有用的是制作集合。此外,单值提供标签关键字或检查关键字的独特功能是否检查。
集合不是一个新的概念,除了perl,很多语言都支持它,例如vbscript和visual basic。但是,如果您想在javascript中使用集合对象,但您并不是那么幸运。 javascript的5.0和5.0版本不支持集合对象 - 除非您自己构建它们。我将使用collection对象创建一个等效的模型,然后用javascript实现它。
请参阅使用vbscript实现的模型
使用服务器端vbscript编写代码时,我通常使用集合对象来处理例行任务,例如管理小型数据库。例如,假设有两个数据库表,一个用于销售公司的零件列表,另一个用于存储生产地址,如图a所示。
图a.
假设您必须建立基于web的报告(报告),包括零件,描述和生产者地址的数量。您可以编写类似于以下内容的sql语句。选择p.part_nbr,p.description,f.na我来自tblpart p,tblfactory f,perfortory_nbr = f.factory_nbr ourcer作者:part_nbr asc
看起来很简单吗?但是假设出于某种原因,您需要的部件已存在于ado recordset中。例如,您需要使用零件表的信息生成代理报告(佣金报告),您应该怎么做?在任何情况下,您都可以在代码列表a中使用select语句,或循环查找零件记录集并使用每个零件记录的select语句以获取制造商的名称。这两种方法是可行的,但访问存储设备是脚本可以实现的工作中最耗时的。当我遇到这种情况时,我通常会使用select语句获取制造商名称和制造商代码,例如
选择factory_nbr,来自tblortory的名称
使用javascript实现自己的集合
现在,您应该了解这个模型如何在vbscript中工作,现在让我们了解javascript如何实现。正如我之前提到的那样,collection对象通过关键字存储数据项。在此示例中,关键字是制造商代码,制造商的名称是数据项。
为了便于使用,我将vbscript中的字典对象选择为模型,该模型实现了表a中所示的方法。表a
方法/属性
例子
阐明
添加
object.add(关键字,数据项)
在集合中添加“关键字”基于 ”
数数
object.count
返回集合中的数据项的数目。
存在
object.exists(关键字)
如果关键字存在,返回“真”,否则返回“假”。
物品
object.item(关键字,数据项)object.item(关键字)
将一个数据项和关键字。返回对应于数据项的关键词。
移除所有
object.removeall()
删除所有 - 集合中的“关键词数据项”对。
消除
object.remove(关键字)
删除此“关键字 - 数据项”对。
钥匙
object.keys()
返回包含所有关键字的数组。
为了在javascript中创建一个集合,你需要使用的构造函数。在javascript的5.0和更早版本,构造函数的书写和使用是一样的类的visual basic(或其他支持对象)的构造。使用构造被认为是建设性的目的。该方法和构造的属性的定义是从javascript的正常功能的javascript构造分离。
在编写构造函数,你可以用这个关键字来访问属性和对象的方法。 constructuring的任务是初始化对象,属性和方法。我们的集合对象有三个属性:this.objcollection,this.count和this.error。从列表c中提取的代码中,我们可以看到属性的定义可能是什么样的。
清单c:this.objcollection = new对象; //关联数组this.count = 0; //项目的总数.error = false; //错误指示
除了包括这三个属性之外,我们的集合对象还有六种方式:this.add,this.exists,this.item,this.removell,this.remove和this.key。这些方法的定义类似于属性的定义方法,不同之处在于该方法的目的是揭示该功能。因此,在add方法中,您需要列表d中所示的代码。
清单d:this.add = coladd; //添加方法void函数coladd(strkey,stritem){/ *功能:coladd代码日期:八月16,2002程序员:edmond woychowsky目的:此函数的目的是将项目添加到collection object.update日期:程序员:描述:* / this.error = false; //默认成功if(typeof(thing.objcollection [strice])=='未定义'){++ this.count;这个.objcollection [stry] = stritem;} else.error = true; // 错误}
类似于添加方法,其他方法还需要自己的定义和功能。一旦完成了这些方法的定义和功能,我他们可以尝试我们的收藏对象。为了简洁起见,我将跳过其他功能方法的定义,简单地介绍了新的javascript的新集合对象的集合。第一个任务是创建此对象的实例:var colfactory = new collection(); //建立一个实例一旦建立了集合对象的实例,添加数据项是一个简单的东西。回到上一个报告示例,可以轻松地在列表e中轻松设置收集任务中的收集任务。
列出e:while(!rstfty.eof){
colfactory.add(rstfty.field('factory_nbr')。值,rstfty.field('name');值); rstfty.movenext}
您只能通过一行代码获取供应商名称:strfactoryname = colfactory.item(strfactorynumber);
总结
通过对vbscript的优点进行建模,您可以构建自己的收集对象以弥补javascrpt的缺点不支持集合对象。只需使用少量代码作为价格,您可以使用javascript中的集合。