Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript object access performance

In Javascript, when your getting a property of an object, is there a performance penalty to getting the whole object vs only getting a property of that object?

Also Keep in mind I'm not talking about DOM access these are pure simple Javascript objects.

For example:

Is there some kind of performance difference between the following code:

Assumed to be faster but not sure:

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]
}

I think this would be slower but not sure if it matters.

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]
}
like image 691
youdontmeanmuch Avatar asked May 29 '10 22:05

youdontmeanmuch


1 Answers

Yes, there is a performance penalty.

The more deep is a property nested, more time will be required to perform the property lookup.

Check this free chapter of the book High Performance JavaScript, in the page 31, it talks specifically about Nested Members.

(Access time related to property depth)

See also this performance test:

  • JavaScript Data Access Test
like image 168
Christian C. Salvadó Avatar answered Oct 02 '22 10:10

Christian C. Salvadó