3

完全に機能する次のコードがあります。

ただし、以下の項目のリストは数十個のオブジェクトに成長する予定であり、switch 句を削除してコードの行数を減らして小さくすることができるかどうかを知りたいと考えています。

「type」引数は、配列、ビューポート、コンテナー、グリッドパネルなどのタイプであり、「component」引数は、配列に入るオブジェクト自体です。

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;
    }
},
4

2 に答える 2

7

ブラケット表記を使用して、コンポーネント タイプを参照できます。

add: function(component, type) {
    var componentType = component.getType() || type;
    this[componentType][component.getId()] = component;
}
于 2013-09-18T12:20:24.207 に答える