2012-05-26 2 views
13

Wenn Sie console.log($('some selector')) im Browser zu tun, gibt es etwas, das wie ein Array (erste Zeile) aussieht:

picture from latest version of chrome web console on Github project page

Aber beachten Sie, dass es nicht ein instanceof Array, aber es ist eigentlich the jQuery object.

Wenn Sie console.dir($('h1')) tun, zeigt es, dass es tatsächlich das jQuery-Objekt ist.

Die Frage ist, wie sieht es aus, als wäre es ein Array in der Webkonsole? Ich habe festgestellt, in der jQuery-Quelle here sie Verweis auf ein paar Array-und Objekt-Methoden hinzufügen, und here fügen sie toArray (und Slice und andere) zu dem jQuery Objekt. Sucht die Webkonsole irgendwie nach diesen Methoden, und wenn sie eine findet (toArray, indexOf, slice, usw.), druckt sie sie als ein Array? Ich möchte dieses Verhalten von jedem benutzerdefinierten Objekt wie dem Ember.ArrayProxy entfernen. Derzeit, wenn Sie die Ember.ArrayProxy loggen zeigt es > Object oder was auch immer, aber es wäre nett, es als ein Array zu zeigen.

Irgendwelche Ideen?

+0

Ist das ein Bild von Code? – jimw

+0

Ja, es ist ein Bild –

+0

Related: http://stackoverflow.com/questions/6599071/array-like-objects-in-javascript. – pimvdb

Antwort

15

Sie machen Ihr Objekt erben Array den Prototyp verwendet, etwa so:

function SomeType() { 
    this.push(16); 
} 

SomeType.prototype = []; 
SomeType.prototype.constructor = SomeType; // Make sure there are no unexpected results 

console.log(new SomeType()); // Displays in console as [16] 

Und natürlich sind alle jQuery Objekte Instanzen der jQuery Funktion/Baumeister sind, das ist so, wie jQuery es tut. Als Bonus erhalten Sie wegen der Vererbung alle Methoden von Array und die damit verbundene Indizierung!

+0

Funktioniert dies über den Browser? –

+0

@LancePollard: Ja. – Ryan

+2

Schön! Nun, ich habe gerade ein paar andere Tests gemacht, und wenn Sie das tun: 'var x = {length: 0, splice: Array.prototype.splice}', dann wird 'x' wie ein Array aussehen. Seltsam ... Es erfordert genau diese 2 Eigenschaften, wie es aussieht. –

Verwandte Themen