Da "arguments" kein echtes Array ist, warum funktioniert Array.prototype.slice.call (arguments), aber Array.prototype.slice.call (someobject) funktioniert nicht?

8

Wenn die Argumente nur ein Objekt mit einer length -Eigenschaft sind, dann scheint es sich anders zu verhalten als andere nicht-Array-Objekte in Bezug auf beispielsweise Array.prototype.slice.

Zum Beispiel alarmiert der folgende Code zunächst "undefiniert" und alarmiert dann "foo". Warum unterscheiden sich diese?

%Vor%     
zjmiller 23.06.2011, 20:30
quelle

1 Antwort

8

Dies funktioniert, wenn Ihr Objekt eine length -Eigenschaft hat.

%Vor%

Die meisten Array-Methoden verwenden die length-Eigenschaft. Wenn Sie versuchen, eine Array-Methode für ein Objekt auszuführen, das die erwartete Schnittstelle nicht verfügbar macht, erhalten Sie unerwartete Ergebnisse.

    
gilly3 23.06.2011, 20:36
quelle

Tags und Links