Mam funkcji, w których używam zamknięcie następująco:Czy przechowywanie dużych zmiennych w zamknięciu może powodować problemy?
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');
zmienna bigjsondata
zawiera duży zbiór danych. Pytanie brzmi: czy przydziela pamięć dla bigjsondata
, gdy tylko utworzę zmienną var a = myobject()
?
Czy może to prowadzić do problemów z pamięcią, jeśli tworzonych jest wiele instancji?
Jeśli tak, to jaki jest najlepszy sposób, aby załadować go tylko raz? (bigjsondata
nie zmienia)
Edycja: Na koniec chciałbym myobject
być dostępne globalnie.
Tak; Tak; Używaj tylko jednej zmiennej (o mniejszym zasięgu lokalnym) – Bergi
Dlaczego mówisz, że 'bigjsondata' nie zmienia się, gdy' obj.data' jest dla niego funkcją ustawiającą? – Bergi
o mój błąd powinienem usunąć funkcję setera. – Nasir