Перебрать свойства объекта, для каждого свойства выполнить заданный код
Синтаксис
for(property in object)
statement
Аргументы
property
Переменная, которой последовательно присваиваются названия свойств объекта. Может быть объявлена при помощи var, но не будет при этом локальной для цикла
object
Объект, свойства которого перебираются
statement
Блок или javascript-вызов для вызова на каждой итерации
Описание, примеры
Конструкция for..in - единственный в javascript способ перебрать все свойства объекта.
Пример:
Выделить все
var a = {
p1: 1,
p2: 2}for(var p in a){alert(p)// p1, затем p2// к значению каждого свойства прибавить 1
a[p] = a[p] + 1}
При этом большинство свойств встроенных объектов javascript перебираться не будут, так как помечены специальным внутренним флагом DontEnum. Этот флаг нельзя получить или поменять.
Пример: встроенное свойство toString
Выделить все
// объявим объектvar a = {
p1: 1}// у него есть свойство toStringalert(a.toString)// унаследованное от Object.prototypealert(a.toString === Object.prototype.toString)// truefor(p in a){// в этом цикле свойства toString не будет}
Порядок перечисления свойств не определен.
Поэтому, если во время итерации добавить свойство к объекту - цикл может по нему пройти позже или не пройти никогда, в зависимости от того, куда это новое свойство встанет во внутренней хэш-таблице интерпретатора javascript.
При удалении свойства во время итерации - если цикл по нему еще не прошел, то он не пройдет в дальнейшем.
Перебор свойств, кроме унаследованных
Для перебора всех свойств объекта, кроме унаследованных, используется конструкция for..in с дополнительной проверкой.
Выделить все
for(var prop in object){// если свойство унаследовано - continueif(!object.hasOwnProperty(p))continue// работа с prop
...
}
В следующем примере свойство print участвовало бы в цикле, если бы там не было проверки.
Пример: пербор без унаследованных свойств
Выделить все
Object.prototype.print = function(){
document.write(this)}var a = {
p1: 1,
p2: 2}for(var p in a){if(!a.hasOwnProperty(p))continuealert(p)}
Это интересно
Наиболее популярные в Интернет покупки - программное обеспечение (50%), туристические путевки (20%), книги и журналы (18%), а также музыкальные кассеты, компакт-диски и альбомы (12%).