flex中dictionary跟Object的区别与遍历
AS3中Object和 Dictionary都可以用来保存key-value形式的数据,Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对的键。例如:
var obj:Object = new Object();
obj["name"] ="name"; // key 字符串"name"
obj[1] = 1; // key是1 (被转换成字符串"1")
obj[new Object()] ="object"; // key是new Object(),被转传成字符串"[object Object]"
for (var key:String in obj) {
trace(key+":"+obj[key]); // 输出 1:1 [object Object]:object name:name
}
也就是说,无论用什么类型的变量作为键,Object都将key转换成字符串。同时,如果你使用了不同的对象作为键,都会被转换成字符串"[object Object]"作为键,因此而指向了同一个数据。例如:
var a:Object = new Object();
var b:Object = new Object();
var obj:Object = new Object();
obj[a] = 1; // obj["[object Object]"] = 1;
obj[b] = 2; // obj["[object Object]"] = 2;
for (var key:String in obj) {
trace(key+":"+obj[key]); // traces: [object Object]:2
}
Dictionary类将没有这个限制,你可以将键设置成任何一种数据类型。例如:
[javascript] view plaincopy
</pre>
<pre class="javascript" name="code">var a:Object = new Object();
var b:Object = new Object();
var dict:Dictionary = new Dictionary();
dict[a] = 1; // dict[a] = 1;
dict[b] = 2; // dict[b] = 2;
for (var key:* in dict) {
trace(key+":"+dict[key]); // traces: [object Object]:2 [object Object]:1
}
注意:
1、虽然在trace的时候,输出的还是[object Object],但是这个结果是对象的toString的结果。在Dictionary对象中,代表的是不同的对象引用。
2、这里的key的类型是*。这是很重要的,因为dict对象中的键可能是任何数据类型的。
3、Object的键必须是字符串,或表示字符串的表达式(变量或函数),若不是字符串的表达式,则将调用toString()方法,将其转化为字符串;
4、与Object不同的是,Dictionary使用的键是对象的引用,而不是字符串,且非原始对象键调用之前是通过全等运算符(===)来进行判断,并不会将数据类型强制转换之后再进行判断。
分享到:
相关推荐
creationComplete="service.send()" > <![CDATA[ import mx.controls.Alert; import mx.rpc.events.FaultEvent;... import mx.collections.ArrayCollection;... import mx.rpc.events.ResultEvent;...
接下来,我们将深入探讨Flex中的拖拽(Drag)和伸缩(Resize)机制,以及ObjectHandle组件如何实现这些功能。 1. Flex框架:Flex是Adobe开发的一种用于构建富互联网应用(RIA)的开源框架,基于ActionScript和MXML。它...
在Flex编程中,有时我们需要遍历一个Object对象的键(keys)和值(values),以进行数据处理或显示。在ActionScript 3.0中,这是通过循环结构来完成的。下面将详细介绍如何使用Flex遍历Object的键和值。 首先,让...
`flex array`指的是在Flex应用中使用的数组,它与标准的AS3数组类似,但提供了更丰富的功能,例如动态扩展和对数组元素的强类型检查。在AS3中,数组可以存储任何类型的数据,包括对象。这里搜索的目标是找到一个对象...
在本实例中,我们关注的是"flex中拖拉拽好实例objecthandles",这是一项利用Adobe Flex框架实现的拖放功能,特别是针对对象手柄(ObjectHandle)的处理。 ObjectHandle是Flex中用于控制拖放行为的一种特殊组件,它...
在Flex编程中,遍历Object对象内容是常见的需求,特别是在处理动态数据或进行对象属性检查时。本篇文章将深入探讨如何在Flex中遍历Object对象的内容,并提供相关的实现代码示例。 首先,让我们理解Flex中的Object类...
flex中文帮助flex中文帮助flex中文帮助flex中文帮助
通过上述步骤,我们可以使用Flex的RemotingObject与后台进行数据交换。这种方式使得Flex应用程序能够灵活地调用远程服务,实现数据的获取和提交。在实际开发中,可能还需要考虑到安全性、性能优化以及错误处理等多...
在Flex开发中,"flex-object-handles.zip_flex"这个压缩包可能包含了关于如何操作和交互Flex中的对象,特别是涉及到对象的移动、编译、放大和缩小功能的代码示例或教程。Flex是一种基于ActionScript和MXML的开源框架...
Flex提供了强大的调试工具,如Flex Builder的集成开发环境(IDE),以及Flex SDK中的命令行编译器,帮助开发者定位和修复问题。 12. **国际化和本地化** Flex支持应用的国际化和本地化,允许开发者创建适应多种...
9. **部署与发布**:Flex应用可以编译为SWF文件,运行在Adobe Flash Player或Adobe AIR环境中。开发者还可以选择将应用打包成桌面应用或移动应用。 10. **Flex的应用场景**:Flex常用于企业级应用、数据可视化、...
【Flex面试题】Flex面试题主要涵盖Flex的基础概念、开发框架、MVC模式的应用、内存管理、垃圾回收机制、前端性能优化以及与后端通信等多个方面。以下是对这些知识点的详细解析: 1. AS2与AS3的区别: AS2...
在Flex开发中,有时我们需要将HTML内容嵌入到Flex应用中,以便实现更丰富的交互功能。然而,在这种情况下,可能会遇到一些技术挑战,比如Flex组件被HTML内容遮挡或者IFrame本身被隐藏。本文将详细讲解如何利用IFrame...
4. **数据绑定**:Flex中的数据绑定是其强大特性之一,它允许UI组件的状态与应用程序数据自动同步。这大大简化了代码,提高了开发效率。 5. **事件驱动编程**:Flex应用程序是基于事件驱动的,用户操作或其他系统...
本篇将详细介绍如何为Flex中的Tree组件设置不同的数据源,包括XML、Array和Object。 首先,让我们从XML数据源开始。XML因其结构化的特性,非常适合用来表示层次数据。在Flex中,我们可以使用mx.collections....
Flex4与Flex3之间的主要区别在于其引入的新组件和外观架构——Spark,以及在布局管理、状态使用、效果实现等方面的改进。虽然从Flex3迁移到Flex4需要一些调整,但总体来说,Flex4提供了一系列增强功能,旨在提高开发...
Flex应用通常运行在Flash Player上,BlazeDS是Adobe提供的服务器端技术,用于实现Flex应用与后端服务器的数据通信。通过AMF(Action Message Format)协议,BlazeDS可以高效地传输数据,实现富客户端与服务器的双向...
本文将详细探讨Flex如何通过RemotingObject与后台进行通信。 一、Flex与后台通讯的基础 1. BlazeDS和LCDS:Flex与后台通信通常借助于BlazeDS或LCDS(LiveCycle Data Services),这两个都是Adobe提供的服务器端...