2010-05-29 7 views
12

En Javascript, quand vous obtenez une propriété d'un objet, y a-t-il une pénalité de performance pour obtenir l'objet entier par rapport à seulement obtenir une propriété de cet objet?javascript performance d'accès aux objets

Aussi, gardez à l'esprit que je ne parle pas d'accès DOM, ce sont des objets Javascript purs et simples.

Par exemple:

Y at-il une sorte de différence de performance entre le code suivant:

censé être plus rapide, mais pas sûr:

var length = some.object[key].length; 

if(length === condition){ 
    // Do something that doesnt need anything inside of some.object[key] 
} 
else{ 
    var object = some.object[key]; 
    // Do something that requires stuff inside of some.object[key] 
} 

Je pense que ce serait plus lent mais pas bien sûr si ça compte.

var object = some.object[key]; 

if(object.length === condition){ 
    // Do something that doesnt need anything inside of some.object[key] 
} 
else{ 
    // Do something that requires stuff inside of some.object[key] 
} 

Répondre

15

Oui, il y a une pénalité de performance.

Plus la propriété est imbriquée, plus de temps sera nécessaire pour effectuer la recherche de propriété.

Cochez cette free chapter du livre High Performance JavaScript, en page 31, il parle spécifiquement des Membres imbriqués.

(temps d'accès liés à la profondeur de la propriété)

Voir aussi ce test de performance:

+1

lien est mort et pourrait-il être mis à jour avec plus récente les navigateurs? – caub

+0

ce lien devrait fonctionner. https://www.nczonline.net/experiments/javascript/performance/data-access.html – kimsk