定义 AS3 类时,您可以使用隐式 getter 和 setter 调用函数以进行简单的属性获取/设置操作。例如,我可以像这样创建一个温度类:
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?