Actionscript 动作脚本:使用';在';关于受保护/私有变量?
是否有办法模拟运算符中的Actionscript 动作脚本:使用';在';关于受保护/私有变量?,actionscript,Actionscript,是否有办法模拟运算符中的,但测试是否存在受保护的或私有的字段 例如,这: <mx:Script><![CDATA[ public var pub:Boolean = true; protected var prot:Boolean = true; private var priv:Boolean = true; ]]></mx:Script> <mx:creationComplete><![CDATA[ fo
,但测试是否存在受保护的
或私有的
字段
例如,这:
<mx:Script><![CDATA[
public var pub:Boolean = true;
protected var prot:Boolean = true;
private var priv:Boolean = true;
]]></mx:Script>
<mx:creationComplete><![CDATA[
for each (var prop in ["pub", "prot", "priv", "bad"])
trace(prop + ":", prop in this);
]]></mx:creationComplete>
将跟踪:
pub: true
prot: false
priv: false
bad: false
酒吧:是的
普罗特:错
普里夫:错
坏:错
当我想看的时候:
pub: true
prot: true
priv: true
bad: false
酒吧:是的
普罗特:是的
普里夫:是的
坏:错
那么:
<mx:creationComplete>
for each (var prop:String in ["pub", "prot", "priv", "bad"])
{
try
{
t.text += prop + ":" + this[prop] + "\n";
}
catch (e:Error)
{
t.text += prop + ": false" + "\n";
}
}
</mx:creationComplete>
对于每个(变量prop:String in[“pub”、“prot”、“priv”、“bad”])
{
尝试
{
t、 text+=prop+“:“+此[prop]+”\n”;
}
捕获(e:错误)
{
t、 text+=prop+“:false”+“\n”;
}
}
您可以尝试访问它并捕获结果错误。:)
中的不知道当前打开的任何名称空间(在您的案例中包括private和protected),并且只查看公共名称空间
对象的
中的实际上只调用了对象::hasOwnProperty
。不幸的是,您无法有效地重写此方法以改变其行为。唯一能影响它的类是flash.utils::Proxy
,它实际上使用flash\u Proxy::hasProperty
来确定hasOwnproperty
的返回值。
因此,除了尝试之外,没有其他方法可悲。既然您拥有所需的连接,您可以请求改变这种行为吗?:)因为这真的很令人伤心。是的,这就是我现在正在做的:函数hasProp(name){try{this[name];return true;}catch(e:ReferenceError){/*什么都不做*/};return false;}
…但是它很蹩脚:(