在ActionScript 3中可以拦截属性获取/设置吗?

-1 投票
2 回答
583 浏览
提问于 2025-04-15 14:11

在使用ActionScript 3开发时,我经常想找到一种方法,能够实现类似于Python中的__getattr____setattr__这两个神奇方法的功能,也就是可以在实例上拦截属性查找,并做一些自定义的操作。

在ActionScript 3中,有没有什么合适的方法可以做到这一点呢?在AS3中,普通(封闭的)类和动态类的属性查找行为有点不同——理想情况下,这两种情况应该能以相同的方式工作。在Python中,这对各种对象都能很好地工作(当然!)甚至对字典的子类也适用!

2 个回答

0

看看这个 flash.utils.Proxy 对象。

Proxy 类允许你改变 ActionScript 中一些默认的操作,比如获取和修改对象的属性。

0

在AS3中,你可以编写明确的变量访问器。

举个例子,假设有一个叫做 Class1 的类:

private var __myvar:String;

public function get myvar():String { return __myvar; }
public function set myvar(value:String):void { __myvar = value; }

现在,当你创建 Class1 的一个实例时,你可以通过访问器函数来访问 __myvar 这个变量。如果你想让这个变量可以绑定,你需要在它的一个访问器上加上 [Bindable] 这个关键词。

另外,你也可以只实现获取器(getter)或设置器(setter),这样你的变量就只能被读取或写入。

希望这些信息对你有帮助。

撰写回答