javascript - js中call函数的用法?
问题描述
var currying = function(fun) { //底下这句代码是什么意思? var args = Array.prototype.slice.call(arguments, 1); return function() { //底下这句代码也不怎么清楚 var _args = args.concat(Array.prototype.slice.call(arguments)); return fun.apply(null, _args); };}
能解释一下这个函数的代码的意思吗?我百度过call方法与 slice方法,但是结合起来用,并且加上函数的参数arguments对象,我就搞不清楚了,新手学习,所以有些概念不怎么理解
问题解答
回答1:简单的例子 var aa=[1,2,3],bb={0:1,1:2,2:3,length:3}; aa.slice(1)//[2,3],此时的slice上的this就是指的aa的 //bb是对象没有slice方法,又想得到[2,3]该怎么办? aa.slice.call(bb,1)//[2,3] 回答2:
别百度了,直接mdn看吧 https://developer.mozilla.org...
var args = Array.prototype.slice.call(arguments, 1);
arguments 是一个类数组对象,而非数组,不一定有数组的slice方法,所以用call方法来使得arguments对象能跟数组一样调用slice方法。
相关文章:
1. vim中编辑HTML文件时换行不能缩进2. git - 在web应用分布式部署的情况下怎么进行配置更新3. javascript - Ajax返回json格式之后的数据解析后取出来的数据为undefined?4. 前端 - WebStrom安装了angularjs插件,但是没有语法提示5. 网页爬虫 - 关于Python的编码与解码问题6. css - 文字排版问题,内容都是动态抓出来的,字数不一定。如何对齐啊7. css3 - 微信前端页面遇到的transition过渡动画的bug8. python - django里使用requests请求问题9. redis - 究竟是选择微信小程序自带的统计工具还是自己开发一个数据统计的代码?10. python3.x - 我把3.6的卸载了,也重启了,但是在cmd用python -V指令查看版本时,还是提示下图的python3.6

网公网安备