as类成员变量的特殊用法

看下面的示例代码:

package
{
	import flash.display.Sprite;
	import flash.text.TextField;
	
	public class startClass extends Sprite
	{
		private var str:String;
		public function startClass()
		{
			this["str"] = "aaa";
			var txt:TextField = new TextField();
			txt.text = str;
			addChild(txt);
			
			
		}
	}
}



用符号[]来引用成员变量的用法在Flex框架中也出现。

比如:

mx.managers.SystemManager中定义了如下成员变量:

mx_internal var childManager:ISystemManagerChildManager;

 

该变量是在mx.managers.systemClasses.ChildManager的构造函数中,按照上面的例子的形式为其赋值的:

	public function ChildManager(systemManager:IFlexModuleFactory)
	{
		super();

		if (systemManager is ISystemManager)
		{
            systemManager["childManager"] = this;
            this.systemManager = ISystemManager(systemManager);
            this.systemManager.registerImplementation("mx.managers::ISystemManagerChildManager", this);
	


>>原因分析:

SystemManager的该childManager成员变量的访问属性不是Public,因此,在ChildManager类中无法通过SystemManager.childManager=XXX的形式为其赋值。

systemManager["childManager"] 是动态的表现形式,在编译期不受检查。


>>点评:

分析Flex框架源代码,感觉类之间的关系被设计的过于复杂(你中有我,我中有你)。

再加上使用了事件机制对程序执行顺序加以控制,使得通过源代码来理解Flex框架的执行顺利变得很困难(思路在不同代码程序片段直接跳来跳去)。

代码可读性不好。

作为在实际项目应用中,需要经常被扩展的UI框架,理应被设计的更好些,更容易被理解才行。

 

也许是:

(1)框架开发没有严格的规范(欧美项目开发的特征?)

(2)“作为框架代码,如果谁都能读懂,岂不轻易被人复制”的考虑?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值