美文网首页
关于slice.call(arguments, 1) 的思考

关于slice.call(arguments, 1) 的思考

作者: A云A | 来源:发表于2017-12-14 16:42 被阅读0次

    今天在跟踪调试Robyn项目的代码时,发现在一个function中用到了这么一段[].slice.call(arguments, 1) 的代码。心中便起了疑惑,对于slice 和 call 的方法,倒是不怎么陌生,解析了下上面的那段代码,就是为了获取arguments 从1 开始到结尾的所有元素。只是觉得奇怪为什么不直接用 arguments.slice(1) 这样去使用呢?(PS:JS当初是啃了《JavaScript权威指南》,可是后面也没有怎么深入去用,最近转来开发HTML5 Game 时,才发现好多基础的东西都忘记的差不多了,汗!!!)。于是,就自己先做了下面的测试:

    有些技术用久了,使用方法都是懂的,听到技术名称就一脸懵逼了。

    今天看了看柯里化(英语:Currying)到底是啥意思找了些资料,说是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。看说明也没什么的,无形当中使用的非常频繁的。看下实现代码是这样的~

    function currying(fn) {

        var slice = Array.prototype.slice,

        __args = slice.call(arguments, 1);

        return function () {

            var __inargs = slice.call(arguments);

            return fn.apply(null, __args.concat(__inargs));

        };

    }

    详细了看一下这里

    引起我注意的是 __args = slice.call(arguments, 1);

    相关文章

      网友评论

          本文标题:关于slice.call(arguments, 1) 的思考

          本文链接:https://www.haomeiwen.com/subject/zbxfextx.html