Verwenden von array.prototype.push vs array.push [duplizieren]

9

Ich habe Leute gesehen, die zwei verschiedene Arten benutzen, verschiedene Methoden des Array-Objekts in Javascript zu verwenden.

Ich benutze es meistens so:

%Vor%

Aber ich habe Leute gesehen, die das benutzen:

%Vor%

Ich verstehe, dass alle JavaScript-Objekte die Eigenschaften und Methoden von ihrem Prototyp erben. Der Object.prototype befindet sich an der Spitze der Prototypkette.

Was sind die Unterschiede zwischen zwei Ansätzen und wann sollte jeder Ansatz verwendet werden?

    
Skywalker 27.10.2015, 15:02
quelle

2 Antworten

11

Der Aufruf über .apply() wird verwendet, wenn Sie .push() mit einem Objekt verwenden möchten, das nicht wirklich ein Array ist. Ein jQuery-Objekt zum Beispiel ist nicht wirklich eine Array-Instanz, aber der Code behält meist eine .length -Eigenschaft bei, die ausreicht, damit wie ein Array aussieht, mindestens so weit wie .push() und Andere Array-Prototyp-Methoden sind betroffen.

Für eine echte Array-Instanz ist dies nicht erforderlich. Die Methode .push() ist direkt über die Prototypkette verfügbar.

Also:

%Vor%     
Pointy 27.10.2015, 15:03
quelle
2

Ich nehme an, Sie haben Array.prototype.push.apply(this,arguments) in einer Funktion wie dieser gesehen

%Vor%

Hier ist das% coo_de% des foo, es ist nur ein arrayähnliches Objekt, kein Array, es hat keine Push-Methode. Also sollten wir arguments

verwenden     
bpceee 27.10.2015 15:04
quelle

Tags und Links