我看到人们在javascript中使用两种不同的方法来使用Array对象的不同方法。
我主要是这样用的:
arr.push(element1, ..., elementN)但我见过有人用这个
Array.prototype.push.apply(this,arguments)我理解所有JavaScript对象都继承了它们的原型中的属性和方法。Object.prototype位于原型链的顶部。
两种方法之间有什么区别,什么时候应该使用每种方法?
发布于 2015-10-27 15:03:04
当您感兴趣地使用一个不是真正的数组的对象时,通过.apply()调用是使用的。例如,jQuery对象并不是真正的数组实例,但是代码主要维护一个.length属性,该属性足以使它看起来像一个数组,至少就.push()和其他.push()原型方法而言是这样。
对于实际的数组实例,没有必要这样做;.push()方法可以通过原型链直接获得。
所以:
var obj = { length: 0 };
Array.prototype.push.apply(obj, ["hello world"]);
console.log(obj[0]); // hello world发布于 2015-10-27 15:04:15
我想您在这样的函数中看到了Array.prototype.push.apply(this,arguments)
function foo() {
arguments.push = function() {
Array.prototype.push.apply(this,arguments);
}
arguments.push(1,2,3);
//....
}这里是foo的arguments,它只是一个类似于数组的对象,而不是一个数组,它没有push方法。所以我们应该使用Array.prototype.push.apply(this,arguments)
https://stackoverflow.com/questions/33371418
复制相似问题