У меня есть модуль, где я хочу назначить функцию для общедоступной переменной, а затем использовать функцию внутри этого модуля. См. Пример ниже для того, что я думал, что смогу сделать.Назначение функций между модулями
main.js
;(function() {
const test = require("./test");
function newFunction() {
console.log("New function");
}
// This works fine
test.someFunction = newFunction;
test.someFunction();
// But this doesn't
test.callSomeFunction();
}());
test.js
;(function() {
let someFunction = function() {
console.log("Old function");
}
function callSomeFunction() {
someFunction();
}
module.exports = {
someFunction,
callSomeFunction
}
}());
Чтобы сделать эту работу, я в настоящее время есть метод, чтобы установить функцию в модуле, так test.js
будет выглядеть как фрагмент ниже.
test.js
;(function() {
let someFunction = function() {
console.log("Old function");
}
function callSomeFunction() {
someFunction();
}
function setSomeFunction(newFunction) {
someFunction = newFunction;
}
module.exports = {
setSomeFunction,
callSomeFunction
}
}());
Поскольку я не чувствую, что это очень элегантное решение, мне было интересно, если есть альтернатива, может быть какой-то способ, чтобы получить первые два сниппеты работать как inteded, или если я застрял с методом setter.
Если я чего-то не хватает, ваше решение, к сожалению, не работает. Даже при определении обеих функций либо с помощью 'let', либо' function' происходит такое же поведение, когда вызывается старая функция. – tobloef