为什么 Flex 框架的 mxml 语言不支持组件构造函数或接受组件构造函数参数呢?据我所知,在 mxml 中无法声明带有构造函数参数的 ActionScript 对象。我很好奇这种设计的原因是什么,是 Adobe 的设计选择还是与声明式语言的工作方式有关?例如,为什么不允许:
<myNameSpace:MyComponent constructor="{argArray}"/>
<myNameSpace:MyComponent constructor="{argArray}"/>
<myNameSpace:MyComponent>
<fx:Script>
<![CDATA[
private var ignored:* = myInstanceConstructor();
private function myInstanceConstructor():* {
// Do something - called once per instance
return null;
}
]]>
</fx:Script>
</myNameSpace:MyComponent>
<myNameSpace:MyComponent>
<fx:Script>
<![CDATA[
private static var ignored:* = myClassConstructor();
private static function myClassConstructor():* {
// Do something - called once per class
return null;
}
]]>
</fx:Script>
</myNameSpace:MyComponent>
private const __new__():* = construct();
,不仅是为了语法糖,而且因为它应该是不可变的。我还会将construct()*
函数设置为protected
以供继承使用。 - Mr. Polywhirl