2016-03-25 6 views
2

Ein Entwickler in meinem Team erwähnte, dass der Zugriff auf eine Object-Eigenschaft über Punktnotation schneller ist als die Klammernotation. Zum Beispiel:Ist die Klammernnotation langsamer als die Punktnotation für den Zugriff auf Objekteigenschaften?

var sample = { name: 'First Name' } 
var nameBracket = sample['name'] 
var namePeriod = sample.name 

In diesem Fall war ihre Überzeugung, dass die Zuordnung von namePeriod würde als nameBracket schneller sein.

Ist das wahr? Wenn ja warum? Wenn nicht, warum nicht?

In Verbindung stehend: Wie man diese Hypothese oder eine ähnliche Frage prüft, um JS Funktionsgeschwindigkeit zu bestimmen?

Antwort

4

Wenn Sie versuchen, Geschwindigkeiten verschiedener Ansätze zu testen, scheint es das Defacto-Tool ist jsperf.com.

Jemand hat dies bereits in Frage gestellt und einen Test dafür erstellt.

http://jsperf.com/dot-notation-vs-square-bracket-notation

Die Ergebnisse scheinen in etwa gleich zu sein. Was verursacht Slowdows ist, wenn der Inhalt der Klammer eine Variable ist - an diesem Punkt kann der Compiler nicht mehr zu sich selbst sagen "Oh, ['foo'] ist das gleiche wie .foo .. weitermachen!".

+1

Oder wenn der Inhalt ein anderer Ausdruck ist, der nicht nur ein String ist, 'obj [function() {für (var start = (neues Datum) .getTime(); (neues Datum) .getTime() Paulpro

+0

Oh du weißt, was ich meinte: P – Stephen

Verwandte Themen