Kann ein Javascript-Array oder -Objekt außer Kraft gesetzt werden, um aufrufbar zu sein?

8

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!

    
treeform 11.10.2011, 20:38
quelle

3 Antworten

2

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.

    
Thom Blake 12.10.2011, 21:36
quelle
2

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);

    
Simon Sarris 11.10.2011 20:48
quelle
2

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:

%Vor%     
George P 11.10.2011 21:10
quelle