我有一个实现setter的基类(“Master”)(我们称之为“a”)。 还有另一个类扩展了Master(“Extended”)并覆盖了“a”setter。
“a”的getter每次都返回一个对象的新实例,并且在Extended类中也被覆盖。
被覆盖的setter看起来像这样:
override public function set a(value:Object):void
{
doSomethingWithValue(value);
super.a = value;
doSometingExtraWithValue(value);
}
现在发生的魔法:每当调用被覆盖的setter时,super.a = value
被执行的那一刻,被调用的getter就会被无缘无故地调用。
为什么,这个问题。没有任何规则说“调用setter时调用getter”,有吗?
答案 0 :(得分:0)
在As3中没有类似的隐藏规则。 有两种简单的方法可以找出发生的情况:
在你的getter中添加以下代码,你将拥有stacktrace,你会发现触发getter调用的内容:
trace(new Error()。getStackTrace());