我有以下代码:
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中的超类数组吗?
答案 0 :(得分:1)
什么是'新'和'返回'值集以及它们分别属于数组或对象?
他们属于到Object
。 Array
仅在此行之前由dataArray
引用:
dataArray = {};
之后,dataArray
将只是Object
的引用,而Array
将无法访问并可用于垃圾回收。
注意:如果您希望dataArray
成为“ Array
Object
s ,”您可以将Object
分配给索引dataArray
:
dataArray[0] = {};
同样设置属性:
dataArray[0].returning = ...;
dataArray[0]['new'] = ...;
另外,对象是Node.js中的超类数组吗?
是。 Array
继承自Object
,因为Array.prototype
是Object
。 MDN对prototype chain有一个很好的总结,这是JavaScript的继承模型。