2010-02-17 90 views

回答

5

取决于如果obj是动态类或不。 obj [name]是一个属性的运行时检查,如果obj.name不存在,obj.name会产生编译时错误。

+1

此外,它obj ['名称']有一些明显的用例,否则根本不可能(动态查找) – 2010-02-17 01:37:26

4

实际上,它的OBJ [表达]对obj.identifier

前者总是导致运行时动态查找,而后者则可并且将在编译时进行检查。因此,如果obj被密封(即不是动态的)并且没有与标识符相匹配的属性,则会产生编译时错误。另外,如果该属性不是动态的(即,动态对象的运行时添加属性),但是在对象类中定义,则该信息用于执行更快的查找。

总结:相比于OBJ [表达],obj.identifier是类型安全signifficantly更快

2
var foobar:String = "id"; 

var obj:Object = new Object{ id:"the value of variable" }; 

trace(obj.id); // the value of variable 
trace(obj[ foobar ]); // value of variable 

你可以使用[]的方法,如果它是一个变量,而您没有名称

相关问题