Ist es in JavaScript möglich, eine Instanzmethode für ein Objekt aufzurufen, das alle seine Geschwister betrifft?
Beispiel: Ich habe die folgende Klasse:
Kann ich eine activateAll
-Methode erstellen, die alle Instanzen der Klasse Thing
aktivieren kann?
Ich brauche this.active
als Instanz Variable.
Sie können alle Instanzen in einem Array speichern und sie iterieren, um ihre Eigenschaft active
zu ändern. Wenn Sie jedoch alle Instanzen speichern, bedeutet dies, dass keine Müllsammlung stattfindet. Sie werden also Speicher verschwenden. Und wenn das Array riesig wird, wird das Iterieren langsam.
Ein besserer Weg wäre die Definition einer gemeinsamen Standardaktivität und Standardpriorität sowie einer eigenen Aktivität und einer eigenen Priorität für jede Instanz. Dann,
Wenn activateAll
viele Male aufgerufen wird und Sie defPriority
nicht unnötig erhöhen möchten, können Sie eine boolesche Variable hinzufügen, um zu wissen, ob eine eigene Eigenschaft die Standardeigenschaft erreicht hat.
Beachten Sie in jedem Fall, dass das Hinzufügen dieser Methode im Prototyp nicht sinnvoll ist. Gemäß den OOP-Prinzipien sollte das Aufrufen einer Methode in einer Variablen keine Auswirkungen auf andere Variablen haben. Erwägen Sie stattdessen, die Methode dem Konstruktor selbst hinzuzufügen.
Ein vollständiges Beispiel könnte so aussehen:
Sie benötigen ein Array instances
, wie folgt:
Ändern Sie Thing
wie folgt:
Implementieren Sie Methoden durch Iteration:
%Vor%Sie können dies wie folgt verallgemeinern:
%Vor%Tags und Links javascript prototype