У меня есть следующее искровое приложение:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
minHeight="600" xmlns:local="*">
<local:TestComponent objects="{[new TestObject()]}">
</local:TestComponent>
</s:Application>
TestComponent:
package
{
import mx.core.UIComponent;
public class TestComponent extends UIComponent
{
public function TestComponent()
{}
public function set objects(array:Array):void
{}
}
}
TestObject:
package
{
public class TestObject
{
public function TestObject()
{}
public function set objs(value:Array): void
{}
}
}
Я заметил, что конструктор TestObject вызывается2 раза, и создаются два экземпляра TestObject.
Последовательность создания выглядит следующим образом:
- Конструктор TestObject
- Конструктор TestComponent
- TestObjectвызывается конструктор
- TestComponent.objects (значение параметра содержит только один объект).
Если я создаю экземпляр TestObject, используя способ "element" в mxml:
<local:TestComponent>
<local:objects>
<local:TestObject>
</local:TestObject>
</local:objects>
</local:TestComponent>
Создан только один экземпляр TestObject.
Кто-нибудь может объяснить, почему создаются два объекта при использовании синтаксиса атрибута, а не синтаксиса элемента (который я считал одинаковым)?