`

flex中dictionary跟Object的区别与遍历

    博客分类:
  • flex
阅读更多

 AS3中Object和 Dictionary都可以用来保存key-value形式的数据,Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对的键。例如:

[javascript] view plaincopy
  1. var obj:Object = new Object();   
  2. obj["name"] ="name"// key 字符串"name"   
  3. obj[1] = 1; // key是1 (被转换成字符串"1")   
  4. obj[new Object()] ="object"// key是new Object(),被转传成字符串"[object Object]"   
  5. for (var key:String in obj) {   
  6.         trace(key+":"+obj[key]); // 输出 1:1 [object Object]:object name:name  
  7. }  


也就是说,无论用什么类型的变量作为键,Object都将key转换成字符串。同时,如果你使用了不同的对象作为键,都会被转换成字符串"[object Object]"作为键,因此而指向了同一个数据。例如:

[javascript] view plaincopy
  1. var a:Object = new Object();      
  2. var b:Object = new Object();      
  3. var obj:Object = new Object();      
  4. obj[a] = 1; // obj["[object Object]"] = 1;      
  5. obj[b] = 2; // obj["[object Object]"] = 2;      
  6. for (var key:String in obj) {      
  7.        trace(key+":"+obj[key]); // traces: [object Object]:2   
  8. }  


Dictionary类将没有这个限制,你可以将键设置成任何一种数据类型。例如:

[javascript] view plaincopy
  1. </pre><p> </p><pre class="javascript" name="code">var a:Object = new Object();   
  2. var b:Object = new Object();   
  3. var dict:Dictionary = new Dictionary();   
  4. dict[a] = 1; // dict[a] = 1;   
  5. dict[b] = 2; // dict[b] = 2;   
  6. for (var key:* in dict) {   
  7.        trace(key+":"+dict[key]); // traces: [object Object]:2 [object Object]:1  
  8. }  

 

注意:

1、虽然在trace的时候,输出的还是[object Object],但是这个结果是对象的toString的结果。在Dictionary对象中,代表的是不同的对象引用。

2、这里的key的类型是*。这是很重要的,因为dict对象中的键可能是任何数据类型的。

 

 

3、Object的键必须是字符串,或表示字符串的表达式(变量或函数),若不是字符串的表达式,则将调用toString()方法,将其转化为字符串;

4、与Object不同的是,Dictionary使用的键是对象的引用,而不是字符串,且非原始对象键调用之前是通过全等运算符(===)来进行判断,并不会将数据类型强制转换之后再进行判断。

分享到:
评论

相关推荐

    Flex调用xml通过DataGrid遍历简单示例

    creationComplete="service.send()" &gt; &lt;![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent;... import mx.collections.ArrayCollection;... import mx.rpc.events.ResultEvent;...

    flex objecthandles一个很不错的拖拽伸缩控件

    接下来,我们将深入探讨Flex中的拖拽(Drag)和伸缩(Resize)机制,以及ObjectHandle组件如何实现这些功能。 1. Flex框架:Flex是Adobe开发的一种用于构建富互联网应用(RIA)的开源框架,基于ActionScript和MXML。它...

    Flex 遍历Object键和值的示例代码

    在Flex编程中,有时我们需要遍历一个Object对象的键(keys)和值(values),以进行数据处理或显示。在ActionScript 3.0中,这是通过循环结构来完成的。下面将详细介绍如何使用Flex遍历Object的键和值。 首先,让...

    flex array 搜索 遍历

    `flex array`指的是在Flex应用中使用的数组,它与标准的AS3数组类似,但提供了更丰富的功能,例如动态扩展和对数组元素的强类型检查。在AS3中,数组可以存储任何类型的数据,包括对象。这里搜索的目标是找到一个对象...

    flex中拖拉拽好实例objecthandles

    在本实例中,我们关注的是"flex中拖拉拽好实例objecthandles",这是一项利用Adobe Flex框架实现的拖放功能,特别是针对对象手柄(ObjectHandle)的处理。 ObjectHandle是Flex中用于控制拖放行为的一种特殊组件,它...

    flex 遍历Object对象内容的实现代码

    在Flex编程中,遍历Object对象内容是常见的需求,特别是在处理动态数据或进行对象属性检查时。本篇文章将深入探讨如何在Flex中遍历Object对象的内容,并提供相关的实现代码示例。 首先,让我们理解Flex中的Object类...

    FLEX中文帮助flex中文帮助

    flex中文帮助flex中文帮助flex中文帮助flex中文帮助

    Flex使用RemotingObject和后台通信的基本步骤

    通过上述步骤,我们可以使用Flex的RemotingObject与后台进行数据交换。这种方式使得Flex应用程序能够灵活地调用远程服务,实现数据的获取和提交。在实际开发中,可能还需要考虑到安全性、性能优化以及错误处理等多...

    flex-object-handles.zip_flex

    在Flex开发中,"flex-object-handles.zip_flex"这个压缩包可能包含了关于如何操作和交互Flex中的对象,特别是涉及到对象的移动、编译、放大和缩小功能的代码示例或教程。Flex是一种基于ActionScript和MXML的开源框架...

    flex 官方文档 中文教程

    Flex提供了强大的调试工具,如Flex Builder的集成开发环境(IDE),以及Flex SDK中的命令行编译器,帮助开发者定位和修复问题。 12. **国际化和本地化** Flex支持应用的国际化和本地化,允许开发者创建适应多种...

    Flex中文教程中文文档

    9. **部署与发布**:Flex应用可以编译为SWF文件,运行在Adobe Flash Player或Adobe AIR环境中。开发者还可以选择将应用打包成桌面应用或移动应用。 10. **Flex的应用场景**:Flex常用于企业级应用、数据可视化、...

    flex 面试题flex

    【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...

    Flex中利用IFrame解决嵌入HTML时Flex组件被遮挡和IFrame被隐藏的问题

    在Flex开发中,有时我们需要将HTML内容嵌入到Flex应用中,以便实现更丰富的交互功能。然而,在这种情况下,可能会遇到一些技术挑战,比如Flex组件被HTML内容遮挡或者IFrame本身被隐藏。本文将详细讲解如何利用IFrame...

    Flex中文帮助 学习Flex的好资料

    4. **数据绑定**:Flex中的数据绑定是其强大特性之一,它允许UI组件的状态与应用程序数据自动同步。这大大简化了代码,提高了开发效率。 5. **事件驱动编程**:Flex应用程序是基于事件驱动的,用户操作或其他系统...

    Flex中Tree组件的数据源举例(xml,array,object)

    本篇将详细介绍如何为Flex中的Tree组件设置不同的数据源,包括XML、Array和Object。 首先,让我们从XML数据源开始。XML因其结构化的特性,非常适合用来表示层次数据。在Flex中,我们可以使用mx.collections....

    Flex3与flex4的区别

    Flex4与Flex3之间的主要区别在于其引入的新组件和外观架构——Spark,以及在布局管理、状态使用、效果实现等方面的改进。虽然从Flex3迁移到Flex4需要一些调整,但总体来说,Flex4提供了一系列增强功能,旨在提高开发...

    flex中文教程.pdf

    Flex应用通常运行在Flash Player上,BlazeDS是Adobe提供的服务器端技术,用于实现Flex应用与后端服务器的数据通信。通过AMF(Action Message Format)协议,BlazeDS可以高效地传输数据,实现富客户端与服务器的双向...

    flex与后台通讯方式

    本文将详细探讨Flex如何通过RemotingObject与后台进行通信。 一、Flex与后台通讯的基础 1. BlazeDS和LCDS:Flex与后台通信通常借助于BlazeDS或LCDS(LiveCycle Data Services),这两个都是Adobe提供的服务器端...

Global site tag (gtag.js) - Google Analytics