我的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
问题是什么?
答案 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'
})
};
}