我明白这可能不是我应该养成的习惯。但我试图将变量连接到一个存储在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] );
字符串已定义并正确显示。
有没有办法可以将该值存储在'form'对象下并仍然得到我想要的结果?我假设'不'。但我想我会问。 (这对谷歌来说是个难题。:P)
答案 0 :(得分: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] );
答案 1 :(得分: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] );
答案 2 :(得分: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]
];