1

JavaScript に問題があります。ご覧ください:

    function Component(data)
    {
       var self = this;

       self.Name = data.name;
    }

    function Testing() {
        var self = this;

        self.Components = [
        {
            A: new Component({
                name: 'test1'
            })
        }, {
            B: new Component({
                name: 'test2'
            })
        }, {
            C: new Component({
                name: 'test3'
            })
        }];
    }

今私がやろうとしているのは、コンポーネント配列から各コンポーネントにそのプロパティ名(A、B、C ...)でアクセスしたいということです。だからこれのために私はやったし、エラーが発生しました:

var t = new Testing();

t.Components['A'].Name; ==> //Error: Cannot read property 'Name' of undefined      

問題は何ですか?

4

2 に答える 2

3

Componentキーを使用してプロパティにアクセスするにはself.Components、オブジェクト (連想配列) である必要があります。コードは を使用して配列にアクセスしようとしますkey。これは、連想配列では問題ありませんが、コードで宣言されている通常の配列では機能しません。オブジェクト リテラルに切り替えるself.Componentsと、プロパティにキーでアクセスできるようになります。

function Testing() {
    var self = this;

    self.Components = {

        A: new Component({
            name: 'test1'
        }), 
        B: new Component({
            name: 'test2'
        }), 
        C: new Component({
            name: 'test3'
        })
    };
}

JS フィドル: http://jsfiddle.net/fxfbe/

于 2013-08-11T09:04:34.513 に答える