首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用array.prototype.push和array.push

使用array.prototype.push和array.push
EN

Stack Overflow用户
提问于 2015-10-27 15:02:20
回答 2查看 10.8K关注 0票数 12

我看到人们在javascript中使用两种不同的方法来使用Array对象的不同方法。

我主要是这样用的:

代码语言:javascript
复制
arr.push(element1, ..., elementN)

但我见过有人用这个

代码语言:javascript
复制
Array.prototype.push.apply(this,arguments)

我理解所有JavaScript对象都继承了它们的原型中的属性和方法。Object.prototype位于原型链的顶部。

两种方法之间有什么区别,什么时候应该使用每种方法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-27 15:03:04

当您感兴趣地使用一个不是真正的数组的对象时,通过.apply()调用是使用的。例如,jQuery对象并不是真正的数组实例,但是代码主要维护一个.length属性,该属性足以使它看起来像一个数组,至少就.push()和其他.push()原型方法而言是这样。

对于实际的数组实例,没有必要这样做;.push()方法可以通过原型链直接获得。

所以:

代码语言:javascript
复制
var obj = { length: 0 };
Array.prototype.push.apply(obj, ["hello world"]);
console.log(obj[0]); // hello world
票数 13
EN

Stack Overflow用户

发布于 2015-10-27 15:04:15

我想您在这样的函数中看到了Array.prototype.push.apply(this,arguments)

代码语言:javascript
复制
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)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33371418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档