Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自调用Javascript函数_Javascript - Fatal编程技术网

自调用Javascript函数

自调用Javascript函数,javascript,Javascript,我正在使用一段代码,其中包含以下Javascript函数。我已经读了一篇文章,其中有一些解释,但对于这段代码是如何工作的,我仍然有点困惑 代码如下: messageBus = (function() { var messages = {}; function publish(name, data) { //does some stuff } function subscribe(name, callback) { //does

我正在使用一段代码,其中包含以下Javascript函数。我已经读了一篇文章,其中有一些解释,但对于这段代码是如何工作的,我仍然有点困惑

代码如下:

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
};

代码do?

{}
中的位do是一个对象文本

{
    foo: bar
}
…是一个对象文字,其属性名为“foo”,其值等于变量“bar”的值


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

因为这三个内部函数(
publish
subscribe
unsubscribe
)是在另一个函数中声明的,所以它们不会存在于该外部函数之外的任何位置

通过返回具有这三个属性的
{…}
对象,您实际上是在
messageBus
中提供了一个“公共”API-
messageBus
将等于具有这三个函数属性的对象,因此可以从外部范围调用它们


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

它返回一个具有三个属性的对象
publish
subscribe
unsubscribe
。看,它返回一个对象。您可以执行该代码并查看控制台中的messageBus。好的,谢谢,我现在明白了,谢谢,我现在明白了