ActionScript 3.0:普通的setter调用三次不同的getter。为什么?

时间:2014-05-01 14:37:16

标签: actionscript-3 flash properties setter getter

请使用以下代码:

private var m_iWidth:int;
[Bindable]
public function get width():int
{
    Alert.show("getter");
    return m_iWidth;
}
private function set width(pValue:int):void
{
    Alert.show("setter");
    m_iWidth = pValue;
}

private function someFunction(pWidth:int):void
{
    width = pWidth;
}

width = pWidth;的输出是:

getter
setter
getter
getter

请解释一下。感谢。

1 个答案:

答案 0 :(得分:1)

1)设置属性后,代码首先调用getter以查看值是否不同。如果它是相同的,则不调用setter(解释第一个get / set对)。

2)如果属性被绑定,在设置之后任何访问都将调用getter(解释最后两个getter调用)