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;}
…但是它很蹩脚:(