Это не нормально:
return {
foo: function() {
return 1
}
}
Вам необходимо удалить этот оператор return
, и в функции bar
вы можете получить доступ к функции foo
, используя имяпеременной test
следующим образом: test.foo()
var test = {
foo: function() {
return 98989;
},
sub: {
bar: function() {
var foo = test.foo();
console.log(foo);
}
}
};
test.sub.bar();
Другой способ - использовать функцию bind
, но это излишне:
var test = {
foo: function() {
return 98989;
},
sub: {
bar: function() {
var foo = this.foo(); // Using the object 'this'
console.log(foo);
}
}
};
test.sub.bar.bind(test)();
Теперь вы можете объявить переменную service
и использовать эту переменную:
angular.module('myApp').factory('Service'function() {
var service = {
foo: function() {
return 1
},
sub: {
bar: function() {
var foo = service.foo();
^^^^^^^
}
}
};
return service;
});