2012-09-18 44 views
0

這裏是JavaScript我使用.toSource用JavaScript數組

var testArr = []; 
testArr["foo"] = "bar"; 
console.log(testArr.toSource()); 
//console.log(testArr["foo"]); //logs "bar" 

輸出我得到的是[],這不是我所期待的。有人可以解釋這裏發生了什麼嗎?

+1

您正在將對象與數組混合。 –

+0

@JoãoSilva你能解釋一下這意味着什麼嗎?在我看來,你不能擁有既是對象又是數組的東西。 – John

+1

您可以將屬性附加到數組。最常見的例子是'length'屬性。 –

回答

0

好吧。 w3schools表示它不適用於IE。

而且我已經在Chrome中執行它和tipical控制檯> testArr還印[]即使> testArr["foo"]印刷bar。所以我認爲在輸出源代碼時不會重複使用排列的數組。

嘗試改變第一行:

var testArr = {}; 

這樣,這將是一個共同的目標。

0
// This declares an array 
var testArr = []; 

// THis assign an object property. Because it isn't a numeric array index, 
// it doesn't show up as part of the array. 
testArr["foo"] = "bar"; 

// .toSource() is not cross platform. 
// JSON.stringify(testArr, undefined, 2) is better 
console.log(testArr.toSource()); 

// Yes, because that property exists. 
//console.log(testArr["foo"]); //logs "bar" 

It sounds like what you really want is this: 

// Make an object that can take string properties and not just integer indexes. 
var testObject = {};