В цикле for..in
есть две проблемы:
obj
относится к клавише , а не к значению. Получить значение с помощью ns[obj]
.
- Аргумент для
.hasOwnProperty()
должен быть строкой. Добавить цитаты.
Вот исправленный цикл:
for (var obj in ns) {
if (ns[obj].hasOwnProperty("getName")) {
setArr(ns[obj].getName());
}
}
Вот рабочий jsFiddle: http://jsfiddle.net/UdyYv/10/
Кроме того, в jsFiddle были некоторые другие проблемы, которые вызывали его сбой, вызывая ошибки при запуске. Вам нужно было объявить namespace.abc
и namespace.abc.person
.
Это оказалась красная сельдь.
Поскольку вы создаете экземпляры abc.common
с помощью ключевого слова new
, abc.common
необходимо указывать методы, а не возвращать объект. Удалите оператор возврата и замените его следующим:
this.setArr = setArr;
this.getArr = getArr;
this.registerArr = registerArr;
Если вы не хотите использовать этот подход, вам не следует создавать его экземпляр с помощью ключевого слова new
. Вместо этого просто назовите это:
commonObj = abc.common();