这个设计叫做什么?

tem*_*ame 4 javascript object

我经常看到这种模式:

var suchAndSuch = new (function() {
    this.thing = "something";
    this.whoaLookAtThat = function() {
        return 4;
    }
    return {
        'thing' : thing,
        'whoaLookAtThat' : whoaLookAtThat
    }
})();
Run Code Online (Sandbox Code Playgroud)

这里发生了什么?这是return声明的一部分让我感到困惑.

我只是没有特别使用IIFE.

如果不出意外,知道它叫什么会帮助我研究它.

Ara*_*and 5

这是一个立即执行的函数和一个(混乱的位)闭包的组合.我认为你的例子可能有点瑕疵,如果是这样可能会更好:

var suchAndSuch = (function() {
    var thing = "something";
    function setThing(newThing){
        //maybe do some error checking here
        thing = newThing;
    };
    function getThing(){
        return thing;
    };

    return {
        getThing : getThing,
        setThing : setThing
    }
})();
Run Code Online (Sandbox Code Playgroud)

然后你会有一个函数执行立即返回一个新对象,有效地提供一个私有变量和一个访问器函数.我曾经多次使用这样的结构.