в вашем примере myFunc
является локальной переменной функции app
, а не член, поэтому он не доступен, как app.myFunc
(Вы не можете получить доступ к локальным членам функцию, в этом случае. Или вообще, если на то пошло). Если module.exports.app абсолютно должен быть функцией, а не, скажем, объект, вы можете сделать это:
module.exports = {
app: function() {
}
};
module.exports.app.myFunc = function(arg) {
return 'working '+arg;
};
Однако, было бы гораздо разумнее для app
просто быть буквальным объект:
module.exports = {
app: {
myFunc: function(arg) {
return 'working '+arg;
}
}
};
с другой стороны, если вам нужно myFunc
зависеть от переменных внутренних к app
(хотя это не должно быть необходимым, так как модули уже подразумевает инкапсуляцию):
module.exports = {
app: (function() {
var _internal = 'working ';
return {
myFunc: function(arg) {
return _internal+arg;
}
};
})()
};
Если вам нужно myFunc
зависеть от параметров, передаваемых app
:
module.exports = {
app: (function(passed) {
return {
myFunc: function(arg) {
return passed+arg;
}
};
})()
};
И затем использовать его в качестве
var test = require('./js/test.js');
console.log(test.app('working ').myFunc('now'));
Это все варианты, которые я могу думать. Если это еще не ответит на ваш вопрос, это поможет, если вы объясните, что вы пытаетесь сделать немного лучше.
Хорошо. Что такое 'app'? Я имею в виду, что у него есть? – thefourtheye
@thefourtheye Я пытаюсь вызывать 'myFunc()' как-то. 'app' - это просто случайное имя, которое я взял. –
App - это функция, вам нужно вызвать ее. –