我看到人们使用两种不同的方式在 javascript 中使用 Array 对象的不同方法。
我主要是这样使用的:
arr.push(element1, ..., elementN)
但我见过有人用这个:
Array.prototype.push.apply(this,arguments)
我知道所有 JavaScript 对象都从其原型(prototype)继承属性和方法。 Object.prototype 位于原型(prototype)链的顶端。
两种方法之间有什么区别以及应在何时使用每种方法?
通过 .apply()
调用是在您有兴趣将 .push()
用于并非真正数组的对象时使用的。例如,一个 jQuery 对象实际上并不是一个数组实例,但代码主要维护一个 .length
属性,该属性足以让它看起来一个数组,至少就.push()
和其他Array 原型(prototype)方法而言。
对于真正的数组实例,没有必要这样做; .push()
方法可通过原型(prototype)链直接使用。
所以:
var obj = { length: 0 };
Array.prototype.push.apply(obj, ["hello world"]);
console.log(obj[0]); // hello world