ActionScript 3对象的属性名是否为字符串?

时间:2011-03-18 15:13:44

标签: flash flex actionscript-3 reflection magic-string

我想在这些中消除魔术字符串的使用:

BindingUtils.bindProperty(obj1, "propertyName", obj2, ["childObj", "anotherProperty"]);

var ddl:DropDownList = new DropDownList();
ddl.labelField = "propertyName";

只需输入类似的内容即可:

ddl.labelField = GetPropertyName(ComplexType.propertyName);

这将允许轻松重构,并在属性名称更改时消除运行时错误。

有什么想法吗?

3 个答案:

答案 0 :(得分:4)

不确定我是否正确理解您的问题。您可以在单独的类中轻松定义静态常量,以消除所有魔术字符串。

// In class ConstantContainer

public static const PROPERTY_NAME:String = "propertyName";

// In anywhere else
ddl.labelField = ConstantContainer.PROPERTY_NAME;

答案 1 :(得分:1)

'魔术字符串'是必需的。请记住,这是一种动态语言,对所有事物都有利有弊。这是其中一个缺点。

您可以采取一些措施来限制静态属性等错误。

答案 2 :(得分:0)

关于类似主题的Stack Overflow讨论,以及您可能感兴趣的一些想法:

Use of object vs string vs enum