0

我知道这可能不是我应该养成的习惯。但我试图将一个变量连接到一个作为 Javascript 数组属性存储的字符串。

例如我有:

var form = {
    'var1' : 'has a value here',
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ' + form.var1]
    ]
};
alert( form.array[1][1] );

这会导致显示“未定义”的警报。

如果我改为这样做:

var var1 = 'has a value here';
var form = {
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ' + var1 ]
    ]
};
alert( form.array[1][1] );

字符串已定义并正确显示。

有没有办法可以将该值存储在“表单”对象下并仍然获得我想要的结果?我假设“不”。但我想我会问。(这对谷歌来说是一个难题。:P)

4

3 回答 3

1

您可以分两部分声明它:

var form = {
    'var1' : 'has a value here'
};

form['array'] = [
    [ 'some text', 'some more text' ],
    [ 'second line of text', 'second entry ' + form.var1]
];

alert( form.array[1][1] );
于 2012-09-20T02:56:40.597 回答
1

您不能在对象文字内部执行此操作(在完成对象表达式之前,form未定义。),但您可以在外部执行此操作。

var form = {
    'var1' : 'has a value here',
    'array' : [
        [ 'some text', 'some more text' ],
        [ 'second line of text', 'second entry ']
    ]
};

form.array[1][1] += form.var1;
alert( form.array[1][1] );​
于 2012-09-20T02:56:00.193 回答
0

我很惊讶你甚至达到了警报声明。form.var1由于未定义表单,您的代码一旦命中就会失败。实现这一目标的一种方法是分别定义它们。像这样

var form = {};
   form.var1 = 'has a value here';
   form.array =   [
      [ 'some text', 'some more text' ],
      [ 'second line of text', 'second entry ' + form.var1]
   ];  
于 2012-09-20T03:03:15.010 回答