В этой статье мы с вами продолжим знакомиться с наиболее сложным, но и не менее интересным типом данных в JavaScript — речь идет об объектах. Приступим?
Итак, мы уже немного представляем себе мощь объектов в JavaScript и удобство работы с ними. По сравнению с обычными переменными, объекты намного удобнее, в их свойствах можно хранить отдельные значения, вложенные объекты со своими свойствами и даже методы объектов, которые являются ни чем иным, как пользовательскими функциями.
В общем, в объекте может храниться масса всего и нужного. А как бы нам пройтись за раз по всему этому добру? Для этого JavaScript предлагает уже знакомый нам оператор in. Напомню, с помощью данного оператора мы можем проверить наличие свойства в объекте. Теперь попробуем использовать его для того, чтобы пробежаться по свойствам объекта.
Для начала взглянем на синтаксис необходимой нам конструкции:
for(var key in object){
// код
}
Как вы заметили, мы используем цикл for, но в незнакомом нам виде. Именно в таком виде мы и можем перебрать все свойства массива. Переменная key здесь условна и в нее на каждой итерации цикла попадает имя свойства объекта. После оператора in указывается название объекта, по свойствам которого мы проходимся в цикле. И практический пример:
var names = {
name1: 'John',
name2: 'Jane',
hi: function(param){
console.log(param);
}
};
for(var prop in names){
console.log('Имя свойства: ' + prop + ', Значение: ' + names[prop]);
}

Как видим, мы перебрали все свойства объекта и вывели наименование свойства и его значение, в том числе и функцию (метод), которая сохранена в свойстве.
Как вы понимаете, мы не просто можем перебирать свойства, но и что делать с их значениями. Например, добавим к значению свойства, если это не функция, фамилию Doe. Ну а если это функция, тогда удалим это свойство из объекта:
var names = {
name1: 'John',
name2: 'Jane',
hi: function(param){
console.log(param);
}
};
console.log(names);
for(var prop in names){
if(prop !== 'hi'){
names[prop] += ' Doe';
}else{
delete names[prop];
}
}
console.log(names);
И результат в консоли:

Источник: http://webformyself.com/obekty-v-javascript-chast-4/
