Ivan-P
@Ivan-P

Как добраться к свойствам обьекта в обьекте JS?

К примеру есть такой обьект:
var obj = {
		innerObj1 : {
			name : 'a',
			sixe: 1
		},
		onnerObj2 : {
			name: 'b',
			size: 2
		}
	};


и такой код
function loop (o){
		for(var key in o) {
			alert(key);
			for(var prop in key) {
				alert(prop);
			}
		}
	};

	loop(obj);

alert(key); выдает innerObj1 и innerObj1,
а вот alert(prop) вместо значений name и size показывают 0 ,1 2 ,3, 4, 5, 6, 7, 8. Что я делаю не так?
  • Вопрос задан
  • 145 просмотров
Решения вопроса 1
callback
@callback
function loop (o){
    for(var key in o) {
      console.log(key, o[key]);
      for(var prop in o[key]) {
        console.log(o[key][prop]);
      }
    }
  };
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
  • Для прохода по внутреннему объекту нужно обращаться к нему, а не к названию свойства.
  • Чтобы не нарваться на расширения прототипов нативных объектов, следует применять Object.keys()
function loop (o){
	Object.keys(o).forEach(function (innerObject) {
		Object.keys(o[innerObject]).forEach(function (prop) {
			console.log(
				'Property: ' + prop,
				'Value: ' + o[innerObject][prop],
				'in Inner Object: ' + innerObject
			);
		});
	});
};
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега JavaScript
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы