Это происходит потому, что ваша функция callback
напрямую вызывает параметр fnc
, а ссылка fnc
не содержит базовый объект (fnc
не связан ни с одним доступным объектом)
Есть много способов избежать этого, самый простой IMO, это использовать анонимную функцию и выполнить вашу функцию:
callBack(function () {
myLand.cities[0].test();
});
Таким образом, значение this
внутри test
будетбыть объектом myLand.cities[0]
.
См. этот вопрос для получения дополнительной информации о поведении значения this
в функциях.