javascript - 从字符串引用对象

标签 javascript arrays object

我有以下完美运行的代码。

但是,我下面的项目列表将增长到数十个对象,我想知道是否可以删除 switch 子句并使用更小、更少的代码行。

“类型”参数是数组、视口(viewport)、容器、网格面板等的类型,“组件”参数是数组中的对象本身。

viewport: {},
container: {},
gridpanel: {},
panel: {},
treepanel: {},
window: {},
button: {},

add: function (component, type) {

    switch (component.getType() != undefined ? component.getType() : type) {
        case 'container':
            this.container[component.getId()] = component;
            break;
        case 'gridpanel':
            this.gridpanel[component.getId()] = component;
            break;
        case 'panel':
            this.panel[component.getId()] = component;
            break;
        case 'treepanel':
            this.treepanel[component.getId()] = component;
            break;
        case 'viewport':
            this.viewport[component.getId()] = component;
            break;
        case 'window':
            this.window[component.getId()] = component;
            break;
        case 'button':
            this.button[component.getId()] = component;
            break;
        default:
            break;
    }
},

最佳答案

您可以使用 bracket notation引用组件类型:

add: function(component, type) {
    var componentType = component.getType() || type;
    this[componentType][component.getId()] = component;
}

关于javascript - 从字符串引用对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18872074/

相关文章:

java - 使用java将大型BasicDBObject存储到mongodb时出现异常

python - 在 Python 中创建具有嵌套属性的空对象

javascript - Google Analytics 点击事件未显示在“行为”>“事件”中。仅在“实时”>“事件”中可见

javascript - 如何在 Google Chrome Cast V2 中更改音轨

javascript - Chrome 扩展程序未正确更改 DOM

Javascript 正则表达式 替换 url

arrays - PostgreSQL - 计算 JSON 中的元素

javascript - 使 JavaScript 函数可行

python - 在没有并行化的情况下提高功能的性能

javascript - 尝试从 Javascript 中的键获取对象值