我能';t在javaScript中获取此结构:var some=(function(){…lotsofcode})();

我能';t在javaScript中获取此结构:var some=(function(){…lotsofcode})();,javascript,processing,processing.js,Javascript,Processing,Processing.js,我是js的noob,有processing.org的背景,这是一个java框架。 我正试图通过一个处理附带的示例来理解下面的代码。现在我对javaScript做了一些研究。但是这个 var someName=(函数(){..code,code,code…})() 把我弄糊涂了 我知道 var name=function(){}//构建一个函数 或 var name={code}//生成obj 甚至 函数名(…){…}//对象 但是。。。括号之间的东西替换了参数?我不明白 下面是完整的代码(我指的

我是js的noob,有processing.org的背景,这是一个java框架。 我正试图通过一个处理附带的示例来理解下面的代码。现在我对javaScript做了一些研究。但是这个

var someName=(函数(){..code,code,code…})()

把我弄糊涂了

我知道

var name=function(){}//构建一个函数

var name={code}
//生成obj

甚至

函数名(…){…}
//对象

但是。。。括号之间的东西替换了参数?我不明白

下面是完整的代码(我指的是这个函数,该代码旨在与浏览器中processing.js中运行的processing进行html输入标记的通信,可以看到它也在运行从那里链接的所有代码)

谢谢你的帮助。谢谢

var Controller = (function(){

    function Controller () {
        var sketch = arguments[0];
        var form = document.getElementById(arguments[1]);
        form.onsubmit = function () {return false};
        var inputs = {};

        this.createInputElement = function ( id, type, labelStr ) {
            var input = document.createElement('input');
            input.id = id;
            input.name = id;
            input.type = type;
            if ( labelStr !== undefined && labelStr !== '' )
            {
                var label = document.createElement('label');
                label['for'] = id;
                label.id = id+'-label';
                label.innerHTML = labelStr;
                form.appendChild(label);
            }
            form.appendChild(input);
            return input;
        }

        this.addInputField = function ( l, t ) {
            var id = createIdFromLabel(l);
            if ( inputs[id] == undefined ) {
                inputs[id] = this.createInputElement(id, t, l);
                inputs[id].onchange = function(){
                    changeFunc()(sketch, id, this.value);
                    return false;
                }
            }
            return inputs[id];
        }

        this.addRange = function ( l, c, mi, mx ) {
            var input = this.addInputField( l, "range" );
            input.value = c;
            input.min = mi;
            input.max = mx;
            return input;
        }

        this.addPassword = function ( l ) {
            var input = this.addInputField ( l, "password" );
            return input;
        }

        this.addEmail = function ( l ) {
            var input = this.addInputField ( l, "email" );
            return input;
        }

        this.addSearch = function ( l, c ) {
            var input = this.addInputField ( l, "search" );
            input.value = c;
            return input;
        }

        this.addNumber = function ( l, c ) {
            var input = this.addInputField ( l, "number" );
            input.value = c;
            return input;
        }

        this.addTelephone = function ( l, c ) {
            var input = this.addInputField ( l, "tel" );
            input.value = c;
            return input;
        }

        this.addUrl = function ( l, c ) {
            var input = this.addInputField ( l, "url" );
            input.value = c;
            return input;
        }

        this.addDate = function ( l, c ) {
            var input = this.addInputField ( l, "date" );
            input.value = c;
            return input;
        }

        this.addCheckbox = function ( l, c ) {
            var id = createIdFromLabel(l);
            if ( inputs[id] == undefined ) {
                inputs[id] = this.createInputElement(id, "checkbox", l);
                inputs[id].onchange = function(){
                    changeFunc()(sketch, id, this.checked);
                    return false;
                }
            }
            inputs[id].checked = c ? 'checked' : '';
            return inputs[id];
        }

        this.addTextfield = function ( l, c ) {
            var id = createIdFromLabel(l);
            if ( inputs[id] == undefined ) {
                inputs[id] = this.createInputElement(id, "text", l);
                inputs[id].onchange = function(){
                    changeFunc()(sketch, id, this.value);
                    return false;
                }
            }
            inputs[id].value = c;
            return inputs[id];
        }

        this.addTextarea = function ( l, c ) {
            var id = createIdFromLabel(l);
            if ( inputs[id] == undefined ) {
                var label = document.createElement('label');
                label['for'] = id;
                label.id = id+'-label';
                label.innerHTML = l;
                form.appendChild(label);
                inputs[id] = document.createElement('textarea');
                inputs[id].id = id;
                inputs[id].name = id;
                inputs[id].innerHTML = c;
                inputs[id].onchange = function(){
                    changeFunc()(sketch, id, this.value);
                    return false;
                }
                form.appendChild(inputs[id]);
            }
            inputs[id].value = c;
            return inputs[id];
        }

        this.addSelection = function ( l, o ) {
            var id = createIdFromLabel(l);
            if ( inputs[id] == undefined ) {
                var label = document.createElement('label');
                label['for'] = id;
                label.id = id+'-label';
                label.innerHTML = l;
                form.appendChild(label);
                var select = document.createElement('select');
                select.id = id;
                select.name = id;
                if ( o !== undefined && o.length && o.length > 0 ) {
                    for ( var i = 0; i < o.length; i++ ) {
                        var value = o[i].length > 1 ? o[i][1] : i;
                        var option = document.createElement('option');
                        option.innerHTML = o[i][0];
                        option.value = value;
                        select.appendChild(option);
                    }
                }
                select.onchange = function( event ){
                    changeFunc()(sketch, id, this.value);
                    return false;
                }
                inputs[id] = select;
                form.appendChild(inputs[id]);
            }
            return inputs[id];
        }
        this.addMenu = this.addSelection;

        this.setElementLabel = function ( element, labelStr ) {
            var label = document.getElementById(element.id+'-label');
            if ( label && label.childNodes && label.childNodes.length > 0 ) {
                label.childNodes[0].textContent = labelStr;
            } else {
                //console.log([element, label]);
            }
        }
    }

    var changeFunc = function () {
        return function ( sketch, id, value ) {
            try {
                sketch[id](value);
            } catch (e) {
                //console.log(e);
                sketch.println( "Function \"void "+id+"(value)\" is not defined in your sketch.");
            }
        }
    }

    var createIdFromLabel = function ( l ) {
        return l.replace(/^[^-_a-z]/i,'_').replace(/[^-_a-z0-9]/gi,'');
    }

    return Controller;

})();
var控制器=(函数(){
函数控制器(){
var sketch=参数[0];
var form=document.getElementById(参数[1]);
form.onsubmit=函数(){return false};
变量输入={};
this.createInputElement=函数(id、类型、labelStr){
var input=document.createElement('input');
input.id=id;
input.name=id;
input.type=type;
if(labelStr!==未定义&&labelStr!=='')
{
var label=document.createElement('label');
标签['for']=id;
label.id=id+'-label';
label.innerHTML=labelStr;
表格.附件(标签);
}
表单。追加子项(输入);
返回输入;
}
this.addInputField=函数(l,t){
变量id=createIdFromLabel(l);
if(输入[id]==未定义){
inputs[id]=this.createInputElement(id,t,l);
输入[id]。onchange=function(){
changeFunc()(草图,id,this.value);
返回false;
}
}
返回输入[id];
}
this.addRange=函数(l、c、mi、mx){
var输入=此.addInputField(l,“范围”);
input.value=c;
input.min=mi;
input.max=mx;
返回输入;
}
this.addPassword=函数(l){
var输入=this.addInputField(l,“密码”);
返回输入;
}
this.addEmail=函数(l){
var输入=this.addInputField(l,“电子邮件”);
返回输入;
}
this.addSearch=函数(l,c){
var输入=this.addInputField(l,“搜索”);
input.value=c;
返回输入;
}
this.addNumber=函数(l,c){
var输入=this.addInputField(l,“数字”);
input.value=c;
返回输入;
}
this.addTelephone=功能(l,c){
var输入=this.addInputField(l,“tel”);
input.value=c;
返回输入;
}
this.addUrl=函数(l,c){
var输入=this.addInputField(l,“url”);
input.value=c;
返回输入;
}
this.addDate=函数(l,c){
var输入=this.addInputField(l,“日期”);
input.value=c;
返回输入;
}
this.addCheckbox=函数(l,c){
变量id=createIdFromLabel(l);
if(输入[id]==未定义){
inputs[id]=this.createInputElement(id,“checkbox”,l);
输入[id]。onchange=function(){
changeFunc()(草图,id,this.checked);
返回false;
}
}
输入[id]。选中=c?“选中”:“”;
返回输入[id];
}
this.addTextfield=函数(l,c){
变量id=createIdFromLabel(l);
if(输入[id]==未定义){
inputs[id]=this.createInputElement(id,“text”,l);
输入[id]。onchange=function(){
changeFunc()(草图,id,this.value);
返回false;
}
}
输入[id]。值=c;
返回输入[id];
}
this.addTextarea=函数(l,c){
变量id=createIdFromLabel(l);
if(输入[id]==未定义){
var label=document.createElement('label');
标签['for']=id;
label.id=id+'-label';
label.innerHTML=l;
表格.附件(标签);
输入[id]=document.createElement('textarea');
输入[id].id=id;
输入[id]。名称=id;
输入[id].innerHTML=c;
输入[id]。onchange=function(){
changeFunc()(草图,id,this.value);
返回false;
}
表单.appendChild(输入[id]);
}
输入[id]。值=c;
返回输入[id];
}
this.addSelection=函数(l,o){
变量id=createIdFromLabel(l);
if(输入[id]==未定义){
var label=document.createElement('label');
标签['for']=id;
label.id=id+'-label';
label.innerHTML=l;
表格.附件(标签);
var select=document.createElement('select');
选择.id=id;
select.name=id;
如果(o!==未定义的&o.length&&o.length>0){
对于(变量i=0;i1?o[i][1]:i;
var controllerFactory = function() {
    function Controller() {
        //Code code code
    }

    return Controller;
};

var Controller = controllerFactory();
!function(params...) {
    //code code code
}(args...);
!function($, undefined) {

}(window.jQuery);