Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript的好部分:unshift函数_Javascript - Fatal编程技术网

JavaScript的好部分:unshift函数

JavaScript的好部分:unshift函数,javascript,Javascript,我正在阅读Crockford的《JavaScript:The Good Parts》,我很难理解他在书中所做的unshift方法的重新实现。下面是代码: Array.method('unshift', function ( ) { this.splice.apply(this, [0, 0].concat(Array.prototype.slice.apply(arguments))); return this.length; }); 如果有人能一步一步地了解正在发生的事情,这

我正在阅读Crockford的《JavaScript:The Good Parts》,我很难理解他在书中所做的
unshift
方法的重新实现。下面是代码:

Array.method('unshift', function ( ) {
  this.splice.apply(this,
    [0, 0].concat(Array.prototype.slice.apply(arguments)));
  return this.length;
});
如果有人能一步一步地了解正在发生的事情,这将是有用的。我不明白的一件事是,为什么他将[0,0]连接到
Array.prototype.slice
的结果

为什么他将[0,0]连接到Array.prototype.slice的结果

splice
(结果数组应用于此)的前两个参数为:

  • index
    0
    ,因为您要添加到数组的前端
  • how many
    (要删除),它是
    0
    ,因为您只是在添加新元素
其余的参数是要添加到数组前面的值,这些值取自
array.prototype.slice.apply(arguments)
(将数据转换为
参数
对象,转换为数组中的数据)

为什么他将[0,0]连接到Array.prototype.slice的结果

splice
(结果数组应用于此)的前两个参数为:

  • index
    0
    ,因为您要添加到数组的前端
  • how many
    (要删除),它是
    0
    ,因为您只是在添加新元素

剩下的参数是要添加到数组前面的值,这些值取自
array.prototype.slice.apply(arguments)
(将数据转换为
arguments
对象并转换为数组中的数据)。

lol,我可以看到他在做什么,如果在我有机会之前没有人对此进行分解,我会告诉你。但是你正在读的这本书有多长时间了?unshift在JS中已经是一个数组方法,并且从1.2开始就一直是。我不确定我是否明白分解库代码的意义?奇怪的是,作者知道这已经是一种方法了。他只是重新实现它,向读者展示它是如何工作的。啊,我明白了。那他为什么不解释呢。哈哈。看起来一个答案已经出现了,这是正确的。如果您需要更多信息,请查阅
。应用
,这将解释为什么第一个参数是
这个
。是的,他应该解释一下,但没有…|124;哈哈,我能看到他在做什么,如果在我有机会之前没有人打破这个,我会告诉你。但是你正在读的这本书有多长时间了?unshift在JS中已经是一个数组方法,并且从1.2开始就一直是。我不确定我是否明白分解库代码的意义?奇怪的是,作者知道这已经是一种方法了。他只是重新实现它,向读者展示它是如何工作的。啊,我明白了。那他为什么不解释呢。哈哈。看起来一个答案已经出现了,这是正确的。如果您需要进一步的信息,请查阅
。应用
,这将解释为什么第一个参数是
这个
。是的,他应该解释一下,但没有|