【问题标题】:Javascript using function directly and using function that is return from another functionJavascript直接使用函数并使用从另一个函数返回的函数
【发布时间】:2018-01-03 11:14:52
【问题描述】:

纯粹出于好奇,我看到了如下代码

let GlobalActions = function () {

    let doSomething= function () {
        //Do Something
    };

    return {
        doSomething: function () {
            doSomething()
        }
    };
}();

GlobalActions.doSomething();

起初,我以为是关于作用域的,也许var外部声明的变量在初始化后无法从内部的每个函数中访问;然而,事实并非如此。

然后我想到了做上面而不是下面的好处是什么?

let GlobalActions = {

    doSomething: function () {
        //Do Something
    };

};

GlobalActions.doSomething();

【问题讨论】:

标签: javascript


【解决方案1】:

在我看来像The Revealing Module Pattern

本质上,返回的对象为整个类提供了“API”接口。然后我们可以选择公开的内容和保持私有的内容。例如。

var myRevealingModule = (function () {

        var privateVar = "Ben Cherry",
            publicVar = "Hey there!";

        function privateFunction() {
            console.log( "Name:" + privateVar );
        }

        function publicSetName( strName ) {
            privateVar = strName;
        }

        function publicGetName() {
            privateFunction();
        }

        // Reveal public pointers to
        // private functions and properties

        return {
            setName: publicSetName,
            greeting: publicVar,
            getName: publicGetName
        };

    })();

myRevealingModule.setName( "Paul Kinlan" );

【讨论】:

  • publicVar”不是公开的,而是私有的。它由特权函数 publicSetName 设置。
  • 所以和使用class完全一样?
猜你喜欢
  • 2018-12-19
  • 2015-07-16
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多