javascript - 使用 array.prototype.push 与 array.push

标签 javascript arrays prototype

<分区>

我看到人们使用两种不同的方式在 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

关于javascript - 使用 array.prototype.push 与 array.push,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33371418/

相关文章:

javascript - Angular2 + Typescript + FileReader.onLoad = 属性不存在

php - 获取两个二维数组的关联行之间的差异

javascript - 在 rxjs 中使用 .map() 添加属性

c# - 无法识别的数组错误

javascript - 如何按照这种模式将 Javascript 对象的所有函数复制到另一个对象?

javascript - 在 AngularJS 中将字符串视为模板

javascript - 如何使用 .filter 比较数组中存在的每个值

javascript - 拆分数组中包含的字符串并保存到另一个数组中

javascript - 在 JavaScript 中重新分配原型(prototype)

JavaScript 的 Object.create 方法