自我调用Javascript函数

时间:2014-10-29 16:08:00

标签: javascript

我正在处理一些具有以下Javascript功能的代码。我已经阅读了this SO文章,该文章已经解释了一些内容,但我仍然对此代码的工作方式感到困惑。

代码如下:

messageBus = (function() {
    var messages = {};

    function publish(name, data) {
        //does some stuff
    }

    function subscribe(name, callback) {
        //does some stuff
    }

    function unsubscribe(name, callback) {
        //does some stuff
    }

    return {
        publish:publish,
        subscribe:subscribe,
        unsubscribe:unsubscribe
    };
})();

然后由

调用
messageBus.publish("Submit");

是什么?
return {
    publish:publish,
    subscribe:subscribe,
    unsubscribe:unsubscribe
};

在代码中做了什么?

2 个答案:

答案 0 :(得分:1)

{}是一个对象文字。

{
    foo: bar
}

...是一个对象文字,其属性名为" foo"其值等于变量" bar"。

的值

该函数返回一个具有三个属性的对象,其中值是在其中定义的函数。

答案 1 :(得分:1)

因为这三个内部函数(publishsubscribeunsubscribe)是在另一个函数中声明的,所以它们不会存在于外部函数之外的任何地方

通过返回具有这三个属性的{ ... }对象,您有效地向messageBus - messageBus提供'公共'API将等于具有这3个函数属性的对象,所以可以从外部范围调用它们。

如果没有返回该对象,则无法从外部作用域中的任何位置调用这三个内部函数。