我正在查看一个underscore.js函数来从一个对象中检索值,我很想知道_.values函数的创建原因是什么。
函数in underscore.js:
_.values = function(obj) {
var keys = _.keys(obj);
var length = keys.length;
var values = Array(length);
for (var i = 0; i < length; i++) {
values[i] = obj[keys[i]];
}
return values;
};
我相信这也会奏效:
_.values = function(obj) {
var keys = _.keys(obj);
var length = keys.length;
var values = [];
for (var i = 0; i < length; i++) {
values.push(obj[keys[i]]);
}
return values;
};
使用#1与#2之间的权衡是什么。是仅仅为了表现还是还有其他事情?
感谢。
答案 0 :(得分:3)
第一种方法允许JS运行时立即分配正确的内存量。
在空数组上调用push()
将强制数组在其变满时调整大小,浪费时间和内存。