在javascript中返回花括号的含义是什么(例如return {init:init})

Ale*_*lex 4 javascript

我正在查看这段代码:

$(function(){
    var $sidescroll = (function() {
        init = function() {
            //STUFF
        };
        return { init : init };    //What does this do?
    })();
    $sidescroll.init();
});
Run Code Online (Sandbox Code Playgroud)

return语句是什么意思?我之前没有在return语句中看过花括号,甚至不确定'init:init'是什么.

Jus*_* L. 9

curly括号在javascript中意味着两件事:

  1. 块
  2. 对象文字

您可能已经看过第二个 - 在其他语言中也称为"词典",键值对,关联数组等:

myDict = { a: "apple", b: "banana" };
Run Code Online (Sandbox Code Playgroud)

当我们说

return { a: "apple" };
Run Code Online (Sandbox Code Playgroud)

这跟说的一样

myDict = { a: "apple" };
return myDict;
Run Code Online (Sandbox Code Playgroud)

在这种情况下"混乱"的事情是(1)键和值相同/具有相同的字符表示,(2)该值不是正常的字符串或变量,而是函数.也就是说,访问对象/字典的键"init"将为您提供一个可以调用的函数().


Ste*_*ein 5

它返回一个新的 Object 实例,其中 init 字段设置为 init 变量的值。这称为“对象文字”

IE

return { init : init }; 
Run Code Online (Sandbox Code Playgroud)

是相同的

var o = new Object();
o.init = init;
return o;
Run Code Online (Sandbox Code Playgroud)