0

我有以下示例代码:

type = 'Foo';

test = {
    type: {
        'fooVal': 'bar'
    }
}

alert(test.type.fooVal); // Bar
alert(test.Foo.fooVal); // TypeError: teste.Foo is undefined

我怎样才能让第二个警报起作用?

我试过了:

test = {
    '"' + type + '"': {
        'fooVal': 'bar'
    }
}

但不起作用。

4

3 回答 3

4

使用括号符号代替:

type = 'Foo';
test = {};
test[type] = {fooVal: 'bar'};
alert(test.Foo.fooVal);

通过对象表示法进行分配时,您不能将变量用作键。

于 2013-01-30T18:10:06.310 回答
0

如果键是由变量定义的,则不能使用对象文字。

type = 'Foo';

test = {};
test[type] = {
  fooVal: 'Bar'
};

alert(test.Foo.fooVal);  // Bar

[]on objects 允许您动态访问属性,以进行设置或获取。

于 2013-01-30T18:10:22.830 回答
0

你没有一个叫做的属性,Foo你有一个叫做 的属性type。你需要做这样的事情:

type = 'Foo';

test = {};
test[type] = {
    'fooVal': 'bar'
};

alert(test.type.fooVal); // Bar
alert(test.Foo.fooVal); // TypeError: teste.Foo is undefined
于 2013-01-30T18:10:31.210 回答