Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Объекты в памяти


Автор: Faydaen 14.1.2013, 18:57
Здравствуйте! У меня вот такой вопрос:
Допустим есть массив, в которым находится очень много разных данных
Код

var myArr = [
    {
    var1:'очень длинная стока',
    var2:'ещё одна очень длинная стока',
    bigObj: { /* объект который содержит под 50 разный свойств */},
    n:32 // значение к которому нужно будет обращаться чаще чем к остальным методам массива
    },
    /* далее идут штук 40 таких вот "тяжелых" объектов в каждом из которых есть свойство n */
    
]

и вот нужно узнать, например, минимальное значение одного из свойств этого объекта,
если написать 
Код

for(var i = 0; i<myArr.length; i++){
    if(myArr[i]['n']<min){
        min = myArr[i]['n'];
    }
    // дальше какой то код
}

то будет ли каждую итерацию загружаться в память другие объекты из этого массива (к которым мы не обращаемся)? Или не будут?
если будут то я создам отдельный массив в котором будут только значения n чтобы не загружать память ненужными объектами
Заранее спасибо за помощь.

Автор: Aliance 14.1.2013, 19:02
А до создания цикла, где находятся объекты из массива? Разве они уже не в памяти, т.к. страница-то загружена.

Автор: CruorVult 14.1.2013, 19:21
Faydaen, Вы имеете ввиду копироваться на каждой итерации?
При присваивании нового значения переменной min все не ссылочные данные будут скопированы в память и храниться там до следующей сборки мусора.

При сравнении myArr[i]['n']<min копироваться ничего не будет, т.к. идет сравнение объектов находящихся в памяти

Автор: Faydaen 14.1.2013, 19:24
Понятно, иными словами массив стоит загрузить один раз, и не волноватся о том сколько раз к нему обращатся. Спасибо. Извенюсь если вопрос показался слишком ламерским 

Автор: CruorVult 14.1.2013, 19:26
Да. При обращении ничего не копируется, при присваивании - копируются не ссылочные данные. Все просто smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)