1

我有一个带有 setter 和 getter 函数的 AS 类。我需要调整这个类的一个实例,以便它的 setter 函数在将输入分配给局部变量之前对其进行处理。

或者,以更详细的方式,在下面的示例中我应该使用什么来代替 $$$?

class MyClass{
    private var _legend:Array;
    function set legend(legend:Array):void{
        _legend= legend;
    }
    function get legend():Array{
        return _legend;
    }
    function someFunction():void{
        foo();
    }
}
var mc:MyClass = new MyClass();
mc.someFunction = function():void{
    bar();
}
mc.$$$ = new function(legend:Array):void{
    _legend = process(legend);
}
4

2 回答 2

0

为什么不将经过处理的输入传递给实例?

mc.legend = process(legend);

如果这不可能,您可以修改 MyClass 中的设置器并采用可选的布尔值进行处理。

function set legend(legend:Array, flag:bool = false):void{
            _legend = flag ? process(legend) : legend;
}

请注意,原型继承并不局限于特定的实例。从文档中:

原型继承 - 是先前版本的 ActionScript 中唯一的继承机制,并且在 ActionScript 3.0 中用作另一种继承形式。每个类都有一个关联的原型对象,原型对象的属性由该类的所有实例共享。

于 2009-03-02T15:31:25.163 回答
0

通常你会继承 MyClass 来修改 MyClass 的行为(多态性)。

class MySubClass extends MyClass {
        function set legend(legend:Array):void{
                // do your checking here. Then call the 
                // setter in the super class.

                super.legend = legend;
        }
}
于 2009-03-02T20:10:01.267 回答