我目前正在维护一些flex代码并注意到很多函数被声明为:
private function exampleFunc():void {
....
}
这些函数位于全局范围中,并且不属于任何特定类,因此我有点不清楚将它们声明为私有的效果。 “私人”限定符对此类功能有什么限制?
答案 0 :(得分:2)
mxmlc代码中包含的actionscript函数将作为mxmlc组件的一部分提供,后者将在后台编译为类。因此将它们标记为私有使它们无法访问。
这是一个明确的例子,假设你有以下组件,我们称之为FooBox:
<!-- FooBox.mxml -->
<mx:Box xmlns:mx="http://www.macromedia.com/2003/mxml">
<mx:Script><![CDATA[
private function foo():void {
lbl.text = "foo";
}
public function bar():void {
lbl.text = "bar";
}
]]></mx:Sctipt>
<mx:Label id="lbl">
</mx:Box>
我现在可以将FooBox添加到我的应用程序中,并使用它的功能:
<mx:Application
xmlns:mx="http://www.macromedia.com/2003/mxml"
xmlns:cc="controls.*"
>
<mx:Script><![CDATA[
private function init():void {
fbox.foo(); // opps, this function is unaccessible.
fbox.bar(); // this is ok...
}
]]></mx:Sctipt>
<cc:FooBox id="fbox" />
</mx:Application>
如果您的主应用程序文件中包含actionscript函数,那么您可以通过Application.application对象从子控件中调用函数,如下所示:
Application.application.bar();
如果bar函数放在主mxmlc代码中。
答案 1 :(得分:0)
全球范围是什么意思?这些函数是在主MXML文件中声明的吗?
通常,private表示只能在声明它们的类中调用函数。
答案 2 :(得分:0)
但是,当你把它放在一个actionscript文件中时。它是否仍然被编译成一个类?
因为asdoc不喜欢它。