2016-12-31 57 views
0

嘿傢伙我今天發現了一些奇怪的事情,試圖在JavaScript中設置一個鍵值對。我知道一個對象的鍵總是'字符串化',以便鍵值對總是字符串:值,但是今天發生了一些奇怪的事情,當我嘗試使用數組。實施例下面:JavaScript丟棄對象鍵值對中的數組括號

var ob = {}; 

var a = [2,4]; 

ob[a] = 10; 

console.log("this is ob ", ob); 

在這裏,我曾嘗試添加鍵[2,4]映射到10。然而,控制檯日誌返回字符串2,4映射到10而不是字符串[2,4]映射到10.有誰知道爲什麼會發生這種情況?

+0

你爲什麼要使用一個數組作爲重點? –

+0

定義「奇怪的東西」。你其實不是在問一個問題。 – Geuis

+1

String'2,4'是'Array.prototype.toString'返回的數組''[2,4]' – Arnial

回答

3

使用一個對象或一個陣列作爲屬性名稱,不調用JSON#stringify,但對象的toString方法,該方法在陣列返回由逗號加入了數組元素。

在這個例子中我覆蓋了Array#toString方法,你可以看到,所產生的屬性名稱反映:

var ob = {}; 
 

 
var a = [2,4]; 
 

 
a.toString = function() { return 'cats' }; // override toString 
 

 
ob[a] = 10; 
 

 
console.log("this is ob ", ob);

相關問題