так, в this post here люди обсуждают тот факт, чтоправильный сброс глобальной переменной в javascript?
A = [1,2,3];
, а затем делает
A = [];
не сбросит массив, но создать новый.
Мой вопрос, если я использую глобальную переменную объекта
myglobals = { A : [] }
Могу ли я безопасно сбросить массив с
myglobals.A = [];
Правильно? Поскольку это ссылается на одно и то же свойство объекта, и поэтому я фактически не создаю новый массив, не так ли?
Update на вопрос в связи с замечаниями ниже
Поскольку существует общее мнение, что splice(0)
является путь, и так как очень подобный вопрос есть ответ, объясняющий влияние на браузер, освобождая память, Мне интересно, если вообще безопасно и правильно устанавливать какой-либо определенный объект (будь то массив или функция или строка и т. Д.) До null
, чтобы сбросить его значение значение при сохранении его ссылка?
объект все еще может иметь свой прототип, и он должен! вот что такое javascript. объекты прототипов, пустые или нет! потому что даже «null» - это что-то, это ничего, поэтому '[]' это что-то, но 'var A = undefined' не определено, но A как объект некоторого прото/типа существует! –
@ alex23, спасибо за ссылку на это сообщение. Кажется, что 'myglobals.A.splice (0)' на самом деле не самый лучший способ. Из принятого ответа там, я получаю, что он должен быть установлен в «null», чтобы позволить браузеру собирать память, не так ли? – tim
@codelio, возможно, я не очень хорошо задаю свой вопрос, извините, если это так. Ваш ответ ниже звучит неправильно: если я устанавливаю 'A = undefined', то' typeof (A) 'возвращает' undefined', но я ожидаю получить 'object' – tim