Ich habe ein Modul, in dem ich einer öffentlichen Variablen eine Funktion zuweisen und dann die Funktion innerhalb dieses Moduls verwenden möchte. Sehen Sie das Beispiel unten für was ich dachte, dass ich in der Lage wäre zu tun.Weisen Sie Funktionen zwischen Modulen zu
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
}
}());
Um diese Arbeit zu machen, ich habe derzeit eine Methode, um die Funktion in dem Modul zu setzen, schauen test.js
würde so wie der Ausschnitt unten.
test.js
;(function() {
let someFunction = function() {
console.log("Old function");
}
function callSomeFunction() {
someFunction();
}
function setSomeFunction(newFunction) {
someFunction = newFunction;
}
module.exports = {
setSomeFunction,
callSomeFunction
}
}());
Da ich nicht das Gefühl, dass dies eine sehr elegante Lösung ist, habe ich mich gefragt, ob es eine Alternative war, vielleicht eine Möglichkeit, die ersten beiden Schnipsel an der Arbeit wie beabsichtigt, oder wenn ich mit der Setter-Methode festhalte.
Wenn ich etwas nicht vermisse, funktioniert Ihre Lösung leider nicht. Selbst wenn beide Funktionen entweder mit "let" oder "function" definiert werden, tritt das gleiche Verhalten auf, wo die alte Funktion aufgerufen wird. – tobloef