FLEX命名空间的本质

Flex命名空间本质

命名空间,即namespace

Namespace类对象,只有两个属性,prefixuriPrefix,即前缀,在XML时才会用到。而uri属性是一个字符串类型,记录着Namespace对象的URIURIThe Uniform Resource Identifier(统一资源定位符)的简写。NamespacetoString()valueOf()都可以返回Namespace对象的uri属性。

Namespace的定义,即命名空间的定义是唯一的,唯一性是命名空间能够正常运转的前提,而且这个唯一性体现在uri属性值的唯一性。只有uri属性唯一,才能保证Namespace唯一。

保证uri唯一的两种方法:

1,明白无误地给uri赋一个独一无二的字符串。

public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";

2,让系统自动生成

namespace roy;

定义命名空间

1,定义在独立的.as文件中。

创建一个以命名空间的名字命名的“.as”文件,再在其中写入namespace的定义

2,定义在类中

命名空前可以有访问控制符,代码如下

class Foo

{

public namespace good;

public namespace bad;

public function getName():Namespace

{

return good;

}

good function hello():void

{

trace("Nice to meet you");

}

bad fuction hello():void 

{

trace("Who are you?");

}

}

仅能通过Foo.goodFoo.bad来访问。说明使用namespace在类体中定义命名空间,则命名空间不是依附于每个实例的,而是相当于一种静态成员,属于整个类。

应用命名空间

class Foo

{

public namespace good;

public namespace bad;

public function getName():Namespace

{

return good;

}

good function hello():void

{

trace("Nice to meet you");

}

bad fuction hello():void 

{

trace("Who are you?");

}

}

如上面红色代码所显示,表示在命名空间goodbad中分别放入了hello函数,但是是完全不同的两个方法。

在应用命名空间是要注意,每个类成员只可以应用一个命名空间。

打开命名空间(use namespace

1use namespace编译时会被提到前端,而且一旦打开,无法再关闭。

use namespace good;

var foo:Foo = new Foo();

foo.hello();

use namesapce bad;

以上代码会出现编译错误,因为use namespace在编译时会提前,因此,代码原型为:

use namespace good;

use namesapce bad;

var foo:Foo = new Foo();

foo.hello();    //hello()因为同时打开了两个命名空间,导致了模糊引用,编译出错。

2use namespace指令不受上下文逻辑影响

只要任何一个地方出现了use namespace指令都会被直接提前,不受上下文逻辑影响。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值