我是AS的新手,偶然发现了文档中“看起来很滑稽”的功能:
您可以使用Object类创建关联数组。关联数组的核心是Object类的实例,每个键值对由属性及其值表示。使用Object数据类型声明关联数组的另一个原因是,您可以使用对象文字来填充关联数组(但仅在您声明它时)。以下示例使用对象文字创建关联数组,使用点运算符和数组访问运算符访问项目,然后通过创建新属性添加新的键值对:
Copy var myAssocArray:Object = {fname:"John", lname:"Public"};
trace(myAssocArray.fname); // John
trace(myAssocArray["lname"]); // Public
myAssocArray.initial = "Q";
trace(myAssocArray.initial); // Q
来自here.
我理解在某些情况下这可能会有所帮助,例如this one但在大多数类型安全的语言(例如Java和C#)中都有背景我对于哪种访问操作符是常见做法以及原因有点困惑。
通常情况下我会选择dot oporator,因为它允许我和编译器跟踪所有给定的属性,并且你可以节省打字错误。
我现在看的代码使用两者,没有可识别的模式,这更令人困惑。
对此有任何意见吗?这个比那个好吗?为什么?何时使用哪一个?
答案 0 :(得分:1)
通常情况下,我会选择dot oporator,因为它允许我和 编译器跟踪所有给定的属性,你是保存 关于拼写错误。
你不能安全地打击拼写错误。当您创建Object
时,您尚未定义/分配的任何属性都将返回undefined
。
var awd:Object = {}
awd.aaa++ //NaN
awd ['aaa']++ //NaN
编译器不会捕获任何引用尚未定义的属性的尝试。
我几乎完全使用[]
方法,因为它会执行我需要.
方法执行的所有操作以及更多内容。对我来说最大的好处是我可以通过变量访问属性。
var awd:Object = {}
var key:String = 'some_key';
awd [key] = 1;
awd.key = 5; //This will literally assign to the 'key' property, not what I want