定义一个AS3类时,可以使用隐式获取器和设置器来调用简单属性获取/设置操作的函数。例如,我可以创建一个温度类,像这样:AS3中动态属性的隐式获取器和设置器?
public var celsius:Number;
public function get fahrenheit():Number {
return 9/5 * celsius + 32;
}
public function set fahrenheit(fahrenheit:Number):void {
celsius = 5/9 * (fahrenheit - 32);
}
然后,我可以得到/设置我的华氏温度就像任何其他财产:
temperature.fahrenheit = 69.2;
这是非常有用的,但作为据我所知,它只适用于在类定义中声明的属性。但是,我发现能够在动态创建的属性上定义getter和setter是非常有用的。事情是这样的:
var obj:Object = new Object();
obj._foo = "bar";
obj.foo = function get() { return this._foo; };
obj.foo = function set (foo:String) { this._foo = foo; };
不幸的是,这样的语法不存在的,所以我的问题是:是否有可能动态地创建在AS3财产getter和setter方法?
除非您通过封闭装饰字段提供私人范围,否则它并没有什么意义。 –