2010-05-29 4 views
12

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

ответ

15

Да, есть штраф за исполнение.

Чем глубже свойство вложенное, тем больше времени потребуется для поиска свойств.

Отметьте это free chapter книги High Performance JavaScript, на странице 31 речь идет конкретно о вложенных членах.

(время доступа, связанное с глубиной собственности)

Смотрите также этот тест производительности:

+1

ссылка мертва, и это могло быть обновлено с более поздним браузеры? – caub

+0

эта ссылка должна работать. https://www.nczonline.net/experiments/javascript/performance/data-access.html – kimsk

Смежные вопросы