Понимание различных JS function invocation patterns поможет здесь:
Как вызывается функция, решает функцию n, который доступен с использованием ключевого слова 'this'
внутри функции.
Сейчас подходит к коду:
module.exports = {
add: function(a, b) { return a + b; },
subtract: function(a, b) { return add(a, -b); }
}
Мы вызываем функцию вычитания следующим образом:
module.exports.subtract(1, 3);
Метод шаблон вызова используется здесь. Это означает, что в функции вычитания будет ссылаться на родительский объект substract (module.exports
), который также содержит функцию add
. Следовательно, функция add
можно получить с помощью this.add
внутри функции вычитания, например:
module.exports = {
add: function(a, b) { return a + b; },
subtract: function(a, b) { return this.add(a, -b); }
}
Во втором случае, вы можете использовать wdosanjos «s answer, если иметь sums.two_and_three
как функция работает для вас, или если Вам нужны суммы в качестве результатов, это может быть сделано:
module.exports = {
add: function(a, b) { return a + b; }
};
module.exports.sums = {
two_and_three: module.exports.add(2,3),
three_and_four: module.exports.add(3,4)
};
Или есть другие способы предложили here, для доступа родительского объекта ОТПРЫСКИ/свойства.
Надеюсь, что это поможет :)
'add' в этой области не определен. Он определяется как ключ в объекте, но ключи не являются определениями переменных. – 4castle
@ 4castle Спасибо за разъяснение! –