Перебрать свойства объекта, для каждого свойства выполнить заданный код
Синтаксис
Аргументы
- property
- Переменная, которой последовательно присваиваются названия свойств объекта. Может быть объявлена при помощи
var
, но не будет при этом локальной для цикла
- object
- Объект, свойства которого перебираются
- statement
- Блок или javascript-вызов для вызова на каждой итерации
Описание, примеры
Конструкция for..in
— единственный в javascript способ перебрать все свойства объекта.
Пример: встроенное свойство toString
10 |
alert(a.toString === Object.prototype.toString) |
14 |
alert( "Property name:" +p+ " value:" +a[p]) |
Порядок перечисления свойств не определен.
Поэтому, если во время итерации добавить свойство к объекту — цикл может по нему пройти позже или не пройти никогда, в зависимости от того, куда это новое свойство встанет во внутренней хэш-таблице интерпретатора javascript.
При удалении свойства во время итерации — если цикл по нему еще не прошел, то он не пройдет в дальнейшем.
Перебор свойств, кроме унаследованных
Для перебора всех свойств объекта, кроме унаследованных, используется конструкция for..in
с дополнительной проверкой.
1 |
for ( var prop in object) { |
3 |
if (!object.hasOwnProperty(prop)) continue |
В следующем примере свойство print
участвовало бы в цикле, если бы там не было проверки.
Пример: пербор без унаследованных свойств
01 |
Object.prototype.print = function () { |
09 |
if (!a.hasOwnProperty(p)) continue |