考虑以下JavaScript全局对象:
var obj = { key1: [ 'data1', 'data2', ... ], key2: [ 'data1, 'data2', ... ], ... }
假设我有一个需要修改分配给obj
中特定键的数组的函数。使用局部变量进行计算并在函数末尾修改数组是否更有效,或者我应该直接修改数组,因为它不在对象的深处?
从本质上讲,我问的是哪个功能更有效:
function local_variable() {
var foo = [];
$( selector ).map(function() {
foo.push( $( this ).val() );
});
obj[ keyx ] = foo;
}
与
function global_object() {
obj[ keyx ] = [];
$( selector ).map(function() {
obj[ keyx ].push( $( this ).val() );
});
}
与往常一样,如果有更好的方法来完成这些功能所做的事情,请赐教。
答案 0 :(得分:3)
function adeneos_object() {
obj[ keyx ] = $.map($( selector ),function(el){return el.value;});
}
答案 1 :(得分:1)
显然,每次访问对象的属性(global_object
)都比数据获取和进一步分配(local_variable
)慢。
但是,如您所见,它取决于特定浏览器使用的优化策略(Firefox,几乎相同)。