函数与使用slice的参数一起应用
Function apply with arguments using slice
查看本教程,我在一条注释中看到了以下代码建议:
init:function(callback){
var that =this ;
return $http.jsonp(this.url).success(
function(data){
that.availableGenres = that.getGenres(data);
that.results = that.getResults(data);
if(callback)callback.apply(null,[].slice.call(arguments))
}
)
}
但这条线路callback.apply(null,[].slice.call(arguments))
在我看来很奇怪。
为什么不只是:callback.apply(null, arguments)
?因为我不喜欢我不理解我用这个Fiddle玩的东西的意义,以理解其中slice
函数的需求。但它给了我同样的结果,我仍然没有得到它
有人知道为什么需要slice
吗?
您并不真正需要它,直接将arguments
传递给apply
即可。
它在EcmaScript 3中被指定为允许,EcmaScript 5甚至允许任何类似数组的对象,而不仅仅是数组和参数对象。也许它需要与更早或有缺陷的JS实现向后兼容。此外,(正如你从其他答案中看到的),有些人不知道这个事实,认为他们需要传递实际的数组,所以他们没有必要小心。
slice,因为function.apply需要一个数组,arguments不是真正的数组,但可以使用slice转换为一个数组。
arguments对象不是Array。它类似于数组,但是除了长度之外,没有任何数组属性。例如,它确实没有pop方法。然而,它可以转换为真正的阵列:
var args = Array.prototype.slice.call(arguments);
这是javascript 的丑陋部分之一
相关文章:
- 无法使我的文本参数与我的查询一起工作
- 为什么要将Array.prototype.slice.call与参数一起使用
- 函数与使用slice的参数一起应用
- 如何在 AngularJS 中与其他参数一起上传 http.post 的图像文件
- Javascript 函数在与参数一起传递时无法调用
- 如何将参数与重置一起传递到主干集合
- 将 JavaScript new 关键字与可变长度参数数组一起使用
- 如何将两个函数的代码与不同的参数组合在一起
- 使用bind(this)并一起传递参数
- 哪个参数与运算符一起排序,作为 Javascript 中的预柯里函数和组合
- 将承诺与多个参数链接在一起
- 将参数与setInterval一起使用可反转这些参数
- 将javascript和jquery与XSL转换或函数参数混合在一起的问题
- 将事件与参数一起传递给函数
- 从当前脚本(即thisscript.js?id=1&type=2)的url获取参数,不能与多个实例一起工作
- 将参数与回调一起传递给javascript函数
- JSON URL不能与参数一起工作
- 将函数"String()"与函数参数一起使用的目的是什么
- 如何将文件名组合在一起,用作命令行工具的参数
- 窗口.与参数一起使用时,Open不打开新窗口