2012-09-20 32 views
0

我知道這可能不是我應該養成的習慣。但我試圖將一個變量連接到一個字符串,該字符串存儲爲一個Javascript數組屬性。在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]); 

字符串正確定義和顯示。

有沒有一種方法可以將該值存儲在「表單」對象下並仍然得到我想要的結果?我假設'不'。但我想我會問。 (這是一個很難回答的問題):

+2

':=',是那個錯字? – xdazz

+0

是的,這是一個錯字。修正了,謝謝。 xD – Squish

回答

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]); 
+0

夢幻般的想法!謝謝xD – Squish

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]);​ 
+0

dbaseman的答案更接近我所尋找的;但這是我沒有想到的又一個解決方案。謝謝! :D – Squish

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] 
    ]; 
+0

表單被聲明。它只是完成(額外)速記。 – Squish

+0

@Squish我的意思是沒有在對象的範圍內聲明,它指的是同一個對象 – hsalama