Javascript: Wörterbuch / Objekt Mitgliedschaft überprüfen Geschwindigkeit

8

Ich war neugierig, was der schnellste Weg wäre, um zu überprüfen, ob ein JS-Objekt (das als Wörterbuch verwendet wird) eine bestimmte Eigenschaft hat.

Und ich war von den Ergebnissen verblüfft. Überzeugen Sie sich selbst: Ссылка

In Chrome ist die Keyword-Methode in 96% langsamer als die Punktsyntax. Und in Firefox ist es auch um 80% langsamer. IE zeigt etwa 50% langsamer

Was zum Teufel? Mache ich etwas falsch? Ich stellte mir vor, dass das "in" -Schlüsselwort optimiert werden würde, da es nicht einmal den Wert erhalten muss, sondern nur einen booleschen Wert zurückgibt. Aber anscheinend war ich einfach falsch.

    
adamJLev 27.10.2010, 16:05
quelle

1 Antwort

6

Sie sind nicht gleich .

  • obj.prop überprüft, ob eine Eigenschaft nicht falsy ist (nicht null , undefined , 0 , "" , false ).

  • prop in obj überprüft, ob eine Eigenschaft in einem Objekt vorhanden ist (einschließlich seiner Prototypkette)

  • Und schließlich haben Sie obj.hasOwnProperty('prop') , das prüft, ob das Objekt prop hat, da es eigene Eigenschaft ist (kann keine vererbte sein).

Beispiel

%Vor%

Ich denke, dass Leistung kein Problem sein sollte, solange Sie nicht gleichzeitig Millionen von Überprüfungen durchführen. Wenn Sie jedoch den schnellsten Weg wollen, können Sie:

verwenden %Vor%

Was prüft, ob die Eigenschaft nicht null oder undefined ist. In dieser Form können andere Falsy-Werte wie "" oder 0 nicht stören, und Sie sind immer noch super performant.

    
galambalazs 27.10.2010 17:02
quelle