2013-04-16 79 views
0

我有以下代碼:混亂對象和數組的Node.js

var dataArray = []; 

    switch (request_url.query.group) { 
     case 'returning': 
      dataArray = {}; 
      var returning = _.filter(result, function(result) { 
       return (result.sessions.length > 1) ? true : false; 
      }); 
      //Am I setting the object dataArray here? 
      dataArray.returning = returning.length; 
      //Am I setting the array dataArray here? 
      dataArray['new'] = result.length - returning.length; 
      break; 

我這裏有關於dataArray中的混亂。第一行代碼聲明瞭一個數組,在開關情況下聲明瞭一個同名的對象。什麼是「新」和「返回」值集以及它們分別屬於誰,數組或對象? 另外,對象Node.js中的超類數組?

+1

第一行只有一個聲明。 – hobbs

+0

在開關盒 –

+1

中有一個dataArray的聲明,不存在。有*任務*。 – hobbs

回答

1

什麼是「新」和「返回」值集合以及它們分別屬於誰,數組或對象?

他們會屬於Object。該Array僅由dataArray引用,直到這條線:

dataArray = {}; 

之後,dataArray將只能是一個參考ObjectArray將變得不可達,可進行垃圾回收。


注意:如果你想dataArray是一個 「ArrayObject小號,」 你可以分配ObjectdataArray指數:

dataArray[0] = {}; 

而且同樣設置的屬性:

dataArray[0].returning = ...; 
dataArray[0]['new'] = ...; 

此外,對象Node.js中的超類數組?

是的。 Array s從Object繼承,因爲Array.prototypeObject。 MDN對prototype chain進行了很好的總結,這是JavaScript的繼承模型。