定義一個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方法?
除非您通過封閉裝飾字段提供私人範圍,否則它並沒有什麼意義。 –