首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模块模式.关注点分离. ES6中的封装

模块模式.关注点分离. ES6中的封装
EN

Stack Overflow用户
提问于 2018-10-06 09:51:18
回答 1查看 152关注 0票数 0

我将在ES6中重写一个应用程序(最初是香草JS ),其中模块模式很受欢迎。

在开始的时候,我意识到我正在努力实现‘关注点分离’,因为如果我们要在ES6中应用数据隐私,我们只使用"{}“,而不像普通的JS那样使用since (众所周知,它实际上是函数表达式)。

香草JS解决方案:

代码语言:javascript
复制
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中,为了传递控制器模块中的其他模块,并且能够使用/传递公共方法,我尝试使用简单的func表达式,而不是IIFE,但是它不起作用。

ES6尝试:

代码语言:javascript
复制
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,即所谓的封装以及上面提到的事情吗?任何想法都将不胜感激!干杯,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-10-06 10:11:11

您需要执行那个BudgetCrtl来像BudgetCrtl().getSum(3)那样访问getSum函数,因为BudgetCrtl是一个函数,而不是

从它的执行中返回的值。

另外,如果要将值存储到n中,则不应该立即将console.log放在箭头函数中,因为它现在的方式是隐式地返回undefined

代码语言:javascript
复制
let budgetController = function() {
    const x = 20;
    function add(a) {
        return x + a;
    }   
    return {
        getSum: (b) => {
          let newVal = add(b)

          console.log(newVal)

          return newVal // so that you can store the value in `n`
        }
    }
}



UIController = function() {
    // some code
}



Controller = function(BudgetCrtl, UICtrl) {
    const n = BudgetCrtl().getSum(3);
    console.log(n);
}
Controller(budgetController, UIController);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52677794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档