Node.js的对象和数组中的混淆

时间:2013-04-16 22:49:59

标签: javascript inheritance

我有以下代码:

    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感到困惑。第一行代码声明了一个数组,在switch的情况下声明了一个同名的对象。什么是'新'和'返回'值集,谁分别属于数组或对象? 另外,对象是Node.js中的超类数组吗?

1 个答案:

答案 0 :(得分:1)

  

什么是'新'和'返回'值集以及它们分别属于数组或对象?

他们属于ObjectArray仅在此行之前由dataArray引用:

dataArray = {};

之后,dataArray将只是Object的引用,而Array将无法访问并可用于垃圾回收。


注意:如果您希望dataArray成为“ Array Object s ,”您可以将Object分配给索引dataArray

dataArray[0] = {};

同样设置属性:

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

  

另外,对象是Node.js中的超类数组吗?

是。 Array继承自Object,因为Array.prototypeObject。 MDN对prototype chain有一个很好的总结,这是JavaScript的继承模型。