0

我有以下代码:

    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 case 中声明了一个同名对象。什么是“新”和“返回”值集,它们分别属于谁,数组还是对象?另外,对象是 Node.js 中数组的超类吗?

4

1 回答 1

1

什么是“新”和“返回”值集,它们分别属于谁,数组还是对象?

他们将属于Object. 直到这一行才被Array引用:dataArray

dataArray = {};

在那之后,dataArray将只是一个引用,Object而这Array将变得无法访问并且可用于垃圾收集。


注意:如果您想dataArray成为s的“ ArrayObject ”,您可以将 分配Object给 的索引dataArray

dataArray[0] = {};

并类似地设置属性:

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

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

是的。Arrays 继承自Objects 因为Array.prototype是一个Object. MDN 对原型链有很好的总结,也就是 JavaScript 的继承模型。

于 2013-04-16T23:07:32.440 回答