Warum ist Object.keys schneller als hasOwnProperty?

7
%Vor%

Laut jsperf ist der Ansatz von Object.keys um 50% schneller Ссылка

Warum ist das?

    
menzoic 19.05.2015, 13:02
quelle

2 Antworten

38
  • Object.keys sucht nach allen eigenen , enumerierbaren Eigenschaften (oh, und Arrays sind schnell).
  • for in sucht zusätzlich nach geerbten aufzählbaren Eigenschaften, nicht nur nach eigenen
  • Eigenschaften
  • for in + hasOwnProperty testet zusätzlich alle nachgeschlagenen Eigenschaften nach, ob es sich um eigene Eigenschaften handelt.

Auch wenn es keine ererbten aufzählbaren Eigenschaften gibt, ist es immer noch eine Aufgabe zu erledigen.

    
Bergi 19.05.2015 13:09
quelle
1

Die meisten Tests in diesem Thread zeigen an, dass hasownproperty schneller ist als Object.keys() . Für diese Tests ist jedoch die Menge der Eigenschaften, die durchlaufen werden sollen, klein (& lt; 20 Eigenschaften).

Wo immer die Anzahl der Objekteigenschaften groß ist (keine exakte Zahl, Tests mit & gt; 100 Schlüsseln zeigten Object.keys() als eindeutigen Gewinner), Object.keys() schlägt es.

Siehe Ссылка . Sie können zum Ende der Seite gehen, um alle Überarbeitungen des Tests zu sehen.

    
Govind Rai 20.01.2017 07:54
quelle

Tags und Links