`

AS3中Object与Dictionary的区别

 
阅读更多
AS3中的Dictionary类(flash.utils.Dictionary)是一个新的AS类。

Dictionary类和Object唯一的区别在于:

Dictionary对象可以使用非字符串作为键值对的键,而Object只能使用字符串做为键值对的键。


以下用两个简单例子来说明具体的差别:

1、使用Object: 

使用Object
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->var a:Object = {val:135}
var b:Object = {val:248};   

var obj:Object = new Object();   
obj[a] 
= 1;        // 键为对象a,值为数字1
obj[b] = 2;        // 键为对象b,值为数字2

for(var p:Object in obj)
{
    trace(p);        
// 输出键
    trace(obj[p]);    // 输出此键对应的值
}

 

输出结果:
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->[object Object]
2

 

结果分析:
因为前面说了Object的键只能使用字符串,所以当我们使用Object来做键的时候,都会被转为[object Object],
obj[a] = 1;
obj[b] = 2;
所以在这里,这两句代码的实际效果是这样的
obj["[object Object]"] = 1;
obj["[object Object]"] = 2;
当执行第二句代码的时候,实际上就是更新前面一个的值,所以才输出这样的结果也就不奇怪了。


2、使用Dictionary:
使用Dictionary
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->var a:Object = {val:135}
var b:Object = {val:248};   

var obj:Dictionary = new Dictionary();   
obj[a] 
= 1;        // 键为对象a,值为数字1
obj[b] = 2;        // 键为对象b,值为数字2

for(var p:Object in obj)
{
    trace(p);        
// 输出键
    trace(obj[p]);    // 输出此键对应的值
    trace(p["val"]); // 输出键(Object)的val属性的值
}

 

输出结果:
<!--<br/ /><br/ />Code highlighting produced by Actipro CodeHighlighter (freeware)<br/ />http://www.CodeHighlighter.com/<br/ /><br/ />-->[object Object]
1
135

[object Object]
2
248

 

结果分析:

因为Dictionary和Object的区别所在,可以使用任意类型数据做键,所以能得到我们想要的结果。

 

所在在平时我们使用Object或其子类的时候,如果键是字符串,也可以达到键值对的效果,

但当键需要Object时,就需要Dictionary了。

分享到:
评论

相关推荐

    iOS对象转字典 object2Dictionary

    "iOS对象转字典 object2Dictionary"这个话题聚焦于如何将Objective-C或Swift中的对象转换成字典(NSDictionary或Swift的Dictionary类型),进而可能进一步转化为JSON格式。这种转换在序列化和反序列化过程中扮演着...

    as3数据结构-中文注释.rar

    6. **哈希表(Hash Table)**:AS3的Object类实质上就是一个简单的哈希表,通过键值对快速查找和存取数据。如果需要更复杂、性能更高的哈希表,可以自定义数据结构,例如使用Dictionary类,它允许将任何类型作为键,...

    as3 资源加载管理

    在AS3(ActionScript 3)中,资源加载管理是一个重要的概念,特别是在开发富互联网应用程序(RIA)或游戏时。白鹭引擎(Egret Engine)是一个流行的2D游戏开发框架,它提供了一套完善的资源管理系统,使得资源的加载...

    上传AS3CBLibrary库

    9. **第三方库兼容**:如果AS3CBLibrary与其它流行的库如Flex SDK或Flash CS等兼容,它可以帮助开发者更好地整合各种资源。 10. **文档和示例**:一个完整的库应该提供详尽的API文档和示例代码,帮助开发者理解和...

    AS-打地鼠教程.zip

    在AS3中,一切皆为对象,所有的类都继承自Object类。基础数据类型如Number、Boolean、String等都是类,还有Array、Dictionary等复杂的数据结构。AS3的事件模型也更为成熟,通过Event类和EventListener接口处理程序中...

    contains 和 Dictionary学习

    在编程领域,`contains` 和 `Dictionary` 是两个非常重要的概念,特别是在面向对象的语言中,如 ActionScript。这里我们将深入探讨这两个概念,并结合提供的 `testAs2.as` 文件进行学习。 首先,`contains` 是一个...

    AS 下实现的简单的数据结构

    字典是键值对的集合,与JavaScript的对象类似,但AS中的Dictionary允许非字符串作为键,提供了更灵活的数据存储。 9. 树(Tree) 树数据结构在AS中需要自定义实现,如二叉树或AVL树。树适用于需要快速查找、插入和...

    新技术培训 培训讲义4_对象和字典.doc

    总结来说,Object和Dictionary在AS3中提供了不同的数据存储和检索机制。Object更适合简单的键值对存储,而Dictionary则适用于需要基于对象引用的键值对操作,尤其在处理复杂数据结构时。理解和熟练运用这两种数据...

    字典语法基础

    Dim d As New Dictionary Set d = CreateObject("scripting.Dictionary") d.Add "张三", "123" d.Add "李四", "456" '对象.新增 Key,Item '注意:在本地窗口中可能看不到Item条件。 'Keys方法 '返回一个数组,...

    AS游戏设计常用数据结构

    AS中的Object类可以作为简单的哈希表,但其键必须为字符串类型。如果需要非字符串键,可以使用flash.utils.IDictionary接口或第三方库如dslib_0.9.5_beta提供的哈希表实现。 树(Tree)数据结构,如二叉树,用于...

    计算重复属性

    Static d As Object Static i As Long Dim iDup As Integer Dim sField ' ---------------------------------------- '这里填写需要检查的字段名 sField = [A] ' ---------------------------------------- If ...

    Excel-VBA宏编程实例源代码-通过Dictionary对象删除文档.zip

    在提供的实例“通过Dictionary对象删除文档.xlsm”中,可能是通过创建一个`Dictionary`来存储某些数据的键(如单元格地址或特定标识符),然后遍历工作表,如果找到与字典中的键匹配的单元格,就删除对应的行或清除...

    台达PLC通过CANOPEN控制步进电机

    在台达PLC中,我们需要配置相关的CANOPEN节点ID、PDO(Process Data Object)映射以及SDO(Service Data Object)参数,以便正确地与步进电机驱动器通信。 在实际应用中,PLC通过发送PDO报文来改变步进电机的运行...

    AS3编码规范

    ### AS3编码规范详解 #### 一、概述 AS3编码规范是一套旨在提升Adobe Flash平台应用程序质量和可维护性的指导原则。本规范由Artlee在2010年提出,结合了作者多年来的Flash项目开发及管理经验,吸收了驼峰命名法与...

    常用数据结构(ActionScript3版)

    字典在AS3中是通过flash.utils.Dictionary类实现的,它提供了更高效的查找方式,尤其适合关联大量数据。 7. 集合(Set) 集合是一种不包含重复元素的数据结构,AS3中的flash.utils.Set类提供了这个功能。集合的元素...

    flash语言菜鸟教程

    2. **数据类型**:AS3支持基本数据类型如`Number`(浮点数和整数)、`String`、`Boolean`、`Object`等,以及复合数据类型如`Array`和`Dictionary`。 3. **函数定义**:函数在AS中用`function`关键字定义,例如`...

    autocad objectarx类的方法属性清单

    ExtensionDictionary AS Autodesk.AutoCAD.DatabaseServices.ObjectId 可读不可写 FileName AS System.String 可读可写 FlagBits AS System.Byte 可读可写 Font AS Autodesk.AutoCAD.GraphicsInterface....

    Adobe+Flash+Professional+CS5+的+ActionScript+3.0+参考

    7. **数据类型和结构**:AS3支持基本数据类型(如Number, String, Boolean)以及复杂类型(如Array, Object, Dictionary)。还有强类型的数组类,如Array和Vector,其中Vector提供类型安全的数组操作。 8. **错误...

    flash 拼图游戏

    在拼图游戏的实现过程中,还会涉及到一些其他关键概念,如时间轴控制(Timeline Control)、对象实例化(Object Instantiation)以及数组和对象字典(Array和Object Dictionary)的使用,这些都对于管理拼图块的状态...

Global site tag (gtag.js) - Google Analytics