javascript 特性

按照js按值传递
res[obj.category].bytes = '修改'
应该是不会修改__array里面的值才对,但是
res.__array.push(res[obj.category] = obj);使用这种赋值方式,修改
res[obj.category].bytes值__array里面的值会一起变更。这要理解成java的引用类型吗?

var dataObject=[ 
 { "category" : "Search Engines", "hits" : 5, "bytes" : 50189 },
 { "category" : "Content Server", "hits" : 1, "bytes" : 17308 },
 { "category" : "Content Server", "hits" : 1, "bytes" : 47412 },
 { "category" : "Search Engines", "hits" : 1, "bytes" : 7601 },
 { "category" : "Business", "hits" : 1, "bytes" : 2847 },
 { "category" : "Content Server", "hits" : 1, "bytes" : 24210 },
 { "category" : "Internet Services", "hits" : 1, "bytes" : 3690 },
 { "category" : "Search Engines", "hits" : 6, "bytes" : 613036 },
 { "category" : "Search Engines", "hits" : 1, "bytes" : 2858 } 
];
var result = dataObject.reduce(function(res, obj) {
    if (!(obj.category in res))
        res.__array.push(res[obj.category] = obj);
    else 
        res[obj.category].bytes = '修改'
    
    return res;
}, {__array:[]})
阅读 1.7k
1 个回答

js虽然是值传递,但是对于引用类型本质上传递的值还是指向对象的指针

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题