Javascript push.apply方法和该参数的
我正在阅读一本书,需要帮助回答一个关于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
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()
方法,这是通用的。它与值没有永久关系。