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 ...)从 Components 数组中访问每个组件。所以为此我做了并得到了错误:

var t = new Testing();

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

什么问题?

4

2 回答 2

3

要访问属性,Component使用一个键self.Components必须是一个对象(关联数组)。代码尝试使用 a 访问数组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 回答
1

问题是在中Components定义的Testing是一个数组,删除数组并简单地创建为对象..

function Testing() {
....
    self.Components = {
        A: new Component({
            name: 'test1'
        }),
        B: new Component({
            name: 'test2'
        }),
        C: new Component({
            name: 'test3'
        })
    };
}
于 2013-08-11T09:06:44.080 回答