Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 push.apply方法和该参数的_Javascript_Arrays_Methods_Push_Apply - Fatal编程技术网

Javascript push.apply方法和该参数的

Javascript push.apply方法和该参数的,javascript,arrays,methods,push,apply,Javascript,Arrays,Methods,Push,Apply,我正在阅读一本书,需要帮助回答一个关于push.apply的非常具体的问题 function SpecialArray(){ var values = new Array(); values.push.apply(values, arguments); values.toPipedString = function(){ return this.join("|"); }; return values; } var colors = n

我正在阅读一本书,需要帮助回答一个关于push.apply的非常具体的问题

function SpecialArray(){
    var values = new Array();
    values.push.apply(values, arguments);

    values.toPipedString = function(){
        return this.join("|");
    };

    return values;
}

var colors = new SpecialArray("red","blue","green");
console.log(colors.toPipedString());
我理解这段代码的作用,但有点迷茫:

values.push.apply(values, arguments);
据我所知。这使用push和apply将函数参数中的数组添加到数组值的0、1和2中。我不明白的是这场争论的原因

我知道更改此值会将其指向另一个对函数有用的对象。在本例中,我尝试将值更改为其他值,因为我只将arguments数组推送到新数组中,不需要更改this指针,但结果中除了值以外的任何值都为空

有人能给我解释一下为什么更改thisArg会产生空白吗?values.push应该已经表明我特别希望它出现在values数组中,并且我只使用apply arrag将一个数组连接到另一个类似于concat方法的数组中

values.push应该已经表明我特别希望它出现在values数组中

没有

写入
值。push(…)
值作为
参数传递给
push()

这是
push()

如果使用
apply()
对其进行校准,则需要将
值显式传递为
this


换句话说,函数
values.push
[].push
Array.prototype.push

在到达
.apply()
时,
.push
方法已经失去了与
值的关系。请记住,
仅在调用函数时设置。但是您没有直接调用
.push()
。您正在调用
.apply()
,它为您调用
.push()
。因此,您需要告诉
.apply()
这个
值应该是您告诉它为您调用的方法中的
这个
值。
.apply()
方法中的
这个
值将是
.push()
方法,这是通用的。它与
值没有永久关系。