Я собираюсь переписать приложение (оно изначально в vanilla JS) в ES6, в котором применяется модуль patter.
Вскоре я понял, что мне трудно получить 'разделение проблем »сделано, поскольку, если мы собираемся применить конфиденциальность данных в ES6, мы используем только« {} », но не IIFE, как в случае ванильного JS (которые, как известно, являются практически функциональными выражениями).
Решение Vanilla JS:
var budgetController = (function() {
const x = 20;
function add(a) {
return x + a;
}
return {
getSum: function(b){
console.log(add(b));
}
}
})();
UIController = (function() {
// some code
})();
Controller = (function(BudgetCrtl, UICtrl) {
var n = BudgetCrtl.getSum(3);
console.log(n);
})(budgetController, UIController);
В ES6 я попытался использовать просто выражения функции, а не IIFE, чтобы передать другой модуль в модуль контроллера и иметь возможностьиспользовать / передавать общедоступные методы, но он не работает.
Попытка ES6:
let budgetController = function() {
const x = 20;
function add(a) {
return x + a;
}
return {
getSum: (b) => console.log(add(b))
}
}
UIController = function() {
// some code
}
Controller = function(BudgetCrtl, UICtrl) {
const n = BudgetCrtl.getSum();
console.log(n);
}
Controller(budgetController, UIController);
Может ли кто-нибудь дать мне какое-нибудь решение для того, чтобы каким-то образом участвовать в ES6так называемая инкапсуляция и вышеупомянутые вещи?Любая идея будет оценена!Ура, спасибо!