Производительность доступа к объекту javascript
В Javascript, когда вы получаете свойство объекта, существует ли штраф за производительность для получения всего объекта, а не только для получения свойства этого объекта?
Также имейте в виду, что я не говорю о доступе DOM, это простые простые объекты Javascript.
Например:
Есть ли разница в производительности между следующим кодом:
Предполагается, что он быстрее, но не уверен:
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]
}
Я думаю, что это будет медленнее, но не обязательно, если это имеет значение.
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
Да, есть штраф за производительность.
Чем глубже свойство вложенное, тем больше времени потребуется для поиска свойств.
Отметьте свободную главу книги Высокопроизводительный JavaScript, на странице 31 речь идет конкретно о вложенных членах.
![propertyDepth.png]()
(Время доступа, связанное с глубиной свойства)
См. также этот тест производительности: