javascript数组的问题?

时间:2013-08-11 08:59:54

标签: javascript jquery

我的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      

问题是什么?

2 个答案:

答案 0 :(得分: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 FIDDLE: http://jsfiddle.net/fxfbe/

答案 1 :(得分:1)

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

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