访问受保护或私有财产

Ale*_*ber 2 actionscript private protected actionscript-3 private-members

在ActionScript 3中有一种方法(一个黑客 - 可能通过方括号,可能通过克隆一个对象,可能通过原型,可能通过命名空间,......)来改变一个私有或受保护的类成员?

例如,如果我有一个IconToast由someLibrary.swc提供的类,我知道它有一个

    protected var windowOptions:WindowOptions;
Run Code Online (Sandbox Code Playgroud)

我能以某种方式改变它吗?我尝试了很多东西,例如:

        var errorToast:IconToast = new IconToast();
        errorToast.addButton("Dismiss");
        errorToast.message = "Error when connecting";
        errorToast['windowOptions'].timeout = 10 * 1000;
        errorToast.show();
Run Code Online (Sandbox Code Playgroud)

(给我运行时错误ReferenceError:错误#1069:在IconToast上找不到属性windowOptions并且没有默认值).

Luk*_*ela 6

通过扩展基类并公开访问private/protected方法/属性等来完成此操作.

public class MyIconToast extends IconToast
{
    public function getWindowOptions():WindowOptions
    {
        return windowOptions;//here you can access protected (not private though:);
    }
}
Run Code Online (Sandbox Code Playgroud)

对于私人而言,它可能是不可能的,但在某种程度上类似于上述解决方案可以做到

最好的祝福