Javascript 使用文字符号扩展命名空间中的对象

Javascript 使用文字符号扩展命名空间中的对象,javascript,namespaces,object-literal,Javascript,Namespaces,Object Literal,我有一个页面,其中包含一组元素,如输入和选择框,它们各自需要添加控制其特定行为的函数 我的代码当前为: var mpp_ui = { itemList : document.getElementById('mpp_itemlist') }; mpp_ui.itemList.clear = function(){ while(this.length > 0){ this.remove(0); } }; 其中,mpp_ui用作命名空间,其中包含需要为

我有一个页面,其中包含一组元素,如输入和选择框,它们各自需要添加控制其特定行为的函数

我的代码当前为:

var mpp_ui = {
    itemList : document.getElementById('mpp_itemlist')
};

mpp_ui.itemList.clear = function(){
    while(this.length > 0){
        this.remove(0);
    }
};
其中,
mpp_ui
用作命名空间,其中包含需要为其分配函数的所有元素,
mpp_ui.itemList
是HTML选择元素

如果可能的话,我希望避免在每个函数语句中键入mpp_ui。我想声明这样的函数(部分是伪代码,因为我不太知道如何进行):

或者,如果上述方法不可行:

var mpp_ui = {
    itemList : document.getElementById('mpp_itemlist'),
    itemList.clear : function(){
        while(this.length > 0){
            this.remove(0);
        }
    }
}

最后一个代码是我尝试的第一件事,但它给了我一个
语法错误:意外标记。
在定义
itemList.clear
的行上。

在挖掘了许多选项后,我最接近我想要的格式是在命名空间中声明元素,然后用想要的函数扩展它们,我用它。结果是:

mpp_ui = {
    itemList : document.getElementById('mpp_itemlist')
};
_(mpp_ui.itemList).extend({
    clear : function(){
        while(this.length > 0){
            this.remove(0);
        }
    }
});

在最后一点上,这是因为
itemList
不是一个对象,当您使用点符号时,它认为您的意思就是这个对象。
typeof(mpp\u ui.itemList)
返回
“object”
mpp_ui = {
    itemList : document.getElementById('mpp_itemlist')
};
_(mpp_ui.itemList).extend({
    clear : function(){
        while(this.length > 0){
            this.remove(0);
        }
    }
});