14

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

1 Answer 1

14

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:

Sign up to request clarification or add additional context in comments.

2 Comments

link is dead and could it be updated with more recent browsers?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.