2010-03-16 6 views
6

In Flex ActionScript kann ein neues Objekt über den parameterlosen Konstruktor mit oder ohne () instanziiert werden. Beispiel:Wird() zum Aufrufen eines Flex ActionScript-Konstruktors angefordert?

var array:ArrayCollection = new ArrayCollection() 

oder

var array:ArrayCollection = new ArrayCollection 

Gibt es einen Unterschied zwischen den beiden? Wird einer dem anderen vorgezogen?

+0

haben Sie Ihre Frage gewählt ... guter Punkt. Natürlich, wenn in Ihrem Konstruktor Args benötigt werden - AHBL. –

+6

Auch wenn es nicht erforderlich ist, fügen Sie sie bitte zur besseren Übersicht hinzu :) –

+0

Gibt es einen Punkt, der Konvention hat, 'neu' in den Konstruktor zu setzen. Wenn der Compiler es verstehen kann, ist es ein Konstruktor ohne '()', dann kann es auch ohne 'neu' verstehen. – Nishu

Antwort

2

Ich denke, es gibt keinen Unterschied funktional, aber ich mag das() nur wegen der Konvention.

0

Interessanter Punkt. Bis zu Ihrer Frage hatte ich noch nie versucht, eine Klasse an den "neuen" Operator zu übergeben, ohne dass eine Schließung den Konstruktor anrief. Ich habe es einfach ausprobiert und es funktioniert, aber ich würde mich nicht wohl dabei fühlen.

-2

, wenn Ihr nicht mit dem Konstruktor gehen, etwas zu tun, dann brauchen Sie nicht einmal so weit gehen:

var array:ArrayCollection; 

Ihre Variable Fein nur erklären würde.

Es gibt wahrscheinlich keinen wirklichen Unterschied, da der Konstruktor wahrscheinlich eine magische Methode ist, die automatisch aufgerufen wird, wenn die Klasse aufgerufen wird.

+0

Dies definiert/deklariert nur die Variable, sie instanziiert keine Instanz einer ArrayCollection. Bis zur Instanziierung ist die Variable nicht definiert. – walpolea

+0

danke für die info walpolea. Ich habe meine Antwort korrigiert. – invertedSpear

0

Ich kenne keine Unterschiede zwischen diesen beiden Möglichkeiten, ein Objekt zu instantiieren, aber die Konvention würde sich auf () beziehen. Denken Sie darüber nach, wenn Sie ein Objekt instanziieren, das Parameter benötigt, die an den Konstruktor var e:Event = new Event('EventType'); gesendet werden, wobei die Klammern selbst dann, wenn sie leer sind, Ihnen sagen, dass nichts übergeben wird.

Verwandte Themen