2012-08-08 49 views
1

我注意到一些奇怪的東西。我一直認爲new Array(){}相同,但它看起來不同,因爲{}似乎只是一種對象類型,而new Array()是Chrome調試器中的陣列。Javascript數組和jQuery.param

所以我一直在使用$.param(data),其中數據是來自$.ajax()調用的數據。我注意到,當我在數據內部有一個params1 = new Array()和一個params2 = {}時,它們以不同的方式出現。

params1成爲

params1[]=1&params1[]=2 

和params2成爲

params2[0]=1&params2[1]=2. 

的問題是,我一直在使用.param(data, false),因爲我注意到,params1[]正在連載錯誤,但是.param(data, false)失敗的params2,給我params2=[object+Object]

我想我可以通過使用.param(數據)和剝離「[]」來解決這個問題,這樣無論它使用{}還是new Array進行初始化,它都能正常工作。但我想知道是否有更好的解決方案(總是使用{} vs new Array)。

+4

'[]'是創建新JavaScript數組的簡寫,而不是'{}'。正如你已經看到的,'{}'創建一個空對象。 – j08691 2012-08-08 20:03:14

+0

[在JavaScript中使用{}或new Object()創建空對象的可能的重複?](http://stackoverflow.com/questions/251402/create-an-empty-object-in-javascript-with-or-新的對象) – DCoder 2012-08-09 19:17:08

回答

1

Kyliod,

在JavaScript的{}是速記用於創建新的對象,[]爲速記 「新的Array()」。

SO:

var myArray1 = []; 
var myArray2 = new Array(); 
var myObject = {}; 
myObject.objVariable1 = 'some string or other variable data'; 
var myObject2 = { obj2Var1 : 'some string', obj2Var2 : 1234, obj2Var3 : true }; 

// do stuff 

var thing1 = myArray1[1]; // get something out of myArray1 
var thing2 = myArray2[2]; // get something out of myArray2 
var thing3 = myObject.objVariable1; // get something out of myObject 
if(myObject2.obj2Var3) 
{ 
    // do other stuff 
} 

希望這有助於你明確你的jQuery/JavaScript的阿賈克斯問題。