Я программист на C/С++/Java, работающий с JavaScript.
Я пытаюсь написать функцию, которая удалит все свойства объекта 'obj'. Я прочитал сообщение о "Как быстро очистить объект Javascript?" и увидел, что есть два ответа: (1) создание нового "obj" (который Я не хочу этого делать, потому что мой код - это высокопроизводительная программа, работающая в мобильном браузере, и я хочу свести к минимуму сбор мусора); и (2) итерирование свойств объекта в цикле и удаление свойств. Этот последний подход не работает в Chrome 12.
Рассмотрим следующий код:
var foo = {};
foo['baz'] = 'bar';
console.log("1. foo.baz = " + foo.baz);
delete foo.baz;
console.log("2. foo.baz = " + foo.baz);
foo['baz'] = 'bar';
console.log("3. foo.baz = " + foo.baz);
for (prop in foo)
{
if (foo.hasOwnProperty(prop))
{
console.log("deleting property " + prop);
delete foo.prop;
}
}
console.log("4. foo.baz = " + foo.baz);
Это приводит к следующему результату в моей консоли в Chrome 12:
1. foo.baz = bar
2. foo.baz = undefined
3. foo.baz = bar
deleting property baz
4. foo.baz = bar
Почему foo.baz не удаляется внутри цикла?