Ich möchte herausfinden, ob Array [] und Object [] durch Array () und Object () ersetzt werden können. Kann ein Funktionsprototyp in die Prototypkette von Arrays oder Objekten gesteckt werden, um sie aufrufbar zu machen. Im Grunde suche ich nach etwas wie diesem:
%Vor%Vielen Dank!
Wahrscheinlich möchten Sie das nicht tun, besonders in keinem Browser. Dies hat nicht viele nette Eigenschaften von Array, einschließlich der Effizienz. Das sagte:
%Vor%Ich wollte ursprünglich Prototypen verwenden, aber Objekte erben die Anrufbarkeit nicht von ihren Prototypen.
BEARBEITEN: Oben wurde behoben, um arguments
nicht zu verwenden. Diese Version erlaubt es Ihnen nicht, einen Wert auf undefined
zu setzen, aber das wird im Allgemeinen sowieso nicht als gute Praxis angesehen.
Gute Frage, aber die Antwort ist nein, weil Objekte keine Funktionen sind.
Das nächste, was Sie bekommen können, ist folgendes:
Array.prototype.set = function(a,b) { this[a] = b; };
Dann können Sie tun:
b.set(0, -1);
Javascript unterstützt das Überladen von Operatoren nicht. Ich kann mir keinen Weg vorstellen, wie eine Variable sowohl den Zugriff von [] als auch von () unterstützt, aber wenn Sie keinen Zugriff auf [] benötigen, könnten Sie etwas wie:
ausprobieren %Vor% In diesem Beispiel ist weird_array
eigentlich kein Array, Sie können also [] nicht darauf verwenden, aber es ist eine Funktion (um ein Datenfeld gewickelt). Sie könnten dann tun:
Tags und Links javascript arrays monkeypatching