有没有更好的方法将数组复制到此变量
function obj(arr) {
for (var i=0, l=arr.length; i<l; ++i) {
this[i] = arr[i];
}
this.length = arr.length;
}
var o = new obj([1,2,3,4]);
console.log(o[0]); // Outputs 1
有没有其他方法可以做到,而不是遍历整个arr
?
答案 0 :(得分:2)
您可以这样使用Array#push
:
function obj(arr) {
Array.prototype.push.apply(this, arr);
}
这会将this
视为一个数组,添加arr
中的所有元素并正确设置length
。另请参阅Function#apply
。
但当然还有一个内部循环。您无法将集合值复制/移动到另一个集合而不进行迭代(除非,我猜,集合使用structural sharing)
答案 1 :(得分:1)
你可以这样做:
function obj() {
return this;
}
var o = obj.apply([1,2,3,4]);
console.log(o[0]); // Outputs 1