2014-07-01 40 views
0

是否有可能使JavaScript對象成爲數組?也就是說,在保持其現有屬性的同時,像lengthpush,forEach等那樣開始表現得像一個數組?我有一個模糊的想法,認爲這可能是通過重新分配原型來實現的,但有些嘗試通過反覆試驗來做到這一點並沒有產生任何結果。使對象成爲數組

+0

的兩dimensiona數組? – j08691

+0

JQuery向你展示瞭如何[鏈接](http://api.jquery.com/jquery.map/) –

+1

這似乎是一個相當奇怪的事情。你想要什麼?您可以非常簡單地從類似數組的對象中構建一個數組,但是將非數組對象轉換爲數組? – user2357112

回答

1

不,你不能。雖然你理論上可以(通過non-standard ways)重新分配原型,但它不會更改其內部的[[Class]]並獲得魔法屬性。

而是嘗試將對象的所有屬性複製到新數組中。

0

我不確定你爲什麼要這樣做,除了訪問.length.push()forEach,正如你所提到的。據我所知,你不能強迫這些特性/功能在對象上工作,但你肯定可以讓身邊:

.length(從here):

Object.size = function(obj) { 
    var size = 0, key; 
    for (key in obj) { 
     if (obj.hasOwnProperty(key)) size++; 
    } 
    return size; 
}; 

// Get the size of an object 
var size = Object.size(myObj); 

.push()

obj.key = value; //there isn't a much shorter way to add something to an object since you have to specify a key and a value 

forEach

for(key in obj){ 
    var value; 
    if(obj.hasOwnProperty(key)){ 
    value = obj[key]; //you now have access to the key and the value in each iteration of obj 
    } 
}