Wenn ein Array erstellt wird, brauche ich eine Funktion, die automatisch für dieses Array aufgerufen wird. Ich dachte mir, dass das irgendwie mit dem Prototyp / Konstruktor des Arrays möglich wäre, aber ich weiß nicht, wie ich dieses Problem lösen soll.
Also habe ich ein Array, das ich initialisiere:
%Vor%Nun sagen wir, ich habe eine Funktion wie folgt:
%Vor% In diesem Fall würde das Aufrufen der Funktion für dieses Array den isObjectArray
-Parameter false
zuweisen.
Ich möchte jedoch, dass diese Funktion jedes Mal im Array ausgeführt wird, wenn ein Array erstellt wird, so dass standardmäßig für jedes Array die Eigenschaft isObjectArray
festgelegt ist. Ist das möglich?
Vielen Dank im Voraus!
Nach meinem Wissen ist es nicht möglich, aber Sie können eine Funktion definieren, die langsam berechnet, ob das Array nur Objekte enthält:
Der obige Code führt die Berechnung nur einmal durch (das erste Mal, wenn er angefordert wird) und bei nachfolgenden Aufrufen gibt er nur den bereits berechneten Wert zurück.
Auch wenn Sie Arrays erstellen, auf denen Sie isObjectArray()
nicht aufrufen, wird die Berechnung nie durchgeführt.
Nein. Dies war unter EcmaScript 3 durch das Überschreiben von Array
möglich, aber dies führte zu einer Reihe von unangenehmen Sicherheitslücken wie z. B. Jeremiah Grossmans Kontaktlistenexfiltrationsattacke gegen Gmail , daher ist es unwahrscheinlich, dass ähnliche Funktionen eingeführt werden.
Wenn ein Angreifer einen Benutzer dazu bringen kann, eine Seite zu besuchen, kann er Folgendes tun:
%Vor%Obwohl @ w0lf meine Frage schon sehr gut beantwortet hat, hat @MatteoTassinari eine Menge Upvotes für diesen Kommentar bekommen:
Erstelle einfach eine "Factory" -Funktion, die ein Array als Parameter akzeptiert und dann alles macht, was du willst.
Also dachte ich, ich würde mir Fabriken ansehen und meine Frage mit einem beantworten, für jeden, der sich die Frage ansieht, wer vielleicht genauso interessiert ist wie in den Fabriken. Folgendes habe ich mir ausgedacht:
%Vor% Im Grunde genommen ist eine "factory" -Funktion eine Funktion, die nur ein neues Objekt zurückgibt - in meinem Fall das Array, das ich in der Fabrik mutiere, indem ich die Variable isObjectArray
hinzufüge. Einfach!
Tags und Links javascript arrays