У меня есть функция, в которой я использую замыкание следующим образом:Может ли хранить большие переменные в замыкании, вызывают проблемы?
function myobject() {
var width=300,
height=400,
bigjsondata = { } // assume this is a big variable ~ 300k
function obj(htmlelement) {
// plot a graph in this htmlelement based on bigjsondata
}
return obj;
}
var plot1 = myobject();
plot1('#holder1');
var plot2 = myobject();
plot1('#holder2');
переменная bigjsondata
содержит большой набор данных. Вопрос в том, выделяет ли память bigjsondata
всякий раз, когда я создаю переменную var a = myobject()
?
Может ли это привести к проблемам с памятью, если создано много экземпляров?
Если да, то каков наилучший способ загрузить его только один раз? (bigjsondata
не меняется)
Edit: В конце я хотел бы myobject
быть доступной по всему миру.
Да; Да; Использовать только одну переменную (меньше локальной области) – Bergi
Почему вы говорите, что 'bigjsondata' не изменяется, когда' obj.data' является функцией setter для него? – Bergi
О, моя ошибка. Я должен удалить функцию сеттера. – Nasir