zoukankan      html  css  js  c++  java
  • Nodejs的偏函数

    买了一本书,写了关于偏函数,没有看懂,看到这篇文章,一下子就看明白了。如下:

    https://blog.csdn.net/qq_15241071/article/details/80036346

    这种通过指定部分参数(isType('String'))来产生一个新的定制函数(返回的f(obj){})的形式就是偏函数。

    偏函数:创建一个 --调用另外一个部分-----参数或变量已经预置的函数 --的函数。定义难懂,直接看下面示例:

    比如我们要判断一个变量的类型,判断是否是字符串:

    var isString = function(obj){

        return toString.call(obj) == '[object String]';//注意String是大写

    }

    判断是否是函数 :

    var isFunction = function(obj){

        return toString.call(obj) == '[object Function]';

    }

    判断是否是数组

    var isArray = function(obj){

        return toString.call(obj) == '[object Array]';

    }

    如果需要判断的对象类型很多,那么isXXX一个一个写,代码繁冗。

    这时候我们可以观察上面几个isXXX的规律,发现都是用传入的对象执行toString()来判断类型。

    这时候,我们引入一个新的函数:

    var isType =function(type){

        return function(obj){

            return toString.call(obj) == '[object '+type+']';// 注意,object后面有空格

        }

    }

    这时候如果我们需要判断是不是String:

    isType('String'); 

    返回一个函数:

    ƒ (obj){
        return toString.call(obj) == '[object '+type+']';// 注意,object后面有空格

    }

    这个函数就是用来判断变量类型,所以我们可以这样写:

    isType('String')('csdn'); //true

    解释一下: isType('String')返回

    ƒ (obj){

        return toString.call(obj) == '[object '+type+']';// 注意,object后面有空格
    }

    所以isType('String')('csdn')相当于调用了返回的f(obj)并将'csdn'传入,执行return toString.call(obj) == '[object '+type+']';

     判断数组和函数同理:

    isType('Function')(function a(){

    });//true

    isType('Array')([1,2,3]);//true

    可以看出,isType就像一个函数工厂,批量创建函数。

    这种通过指定部分参数(isType('String'))来产生一个新的定制函数(返回的f(obj){})的形式就是偏函数。
    ————————————————
    版权声明:本文为CSDN博主「Klingonsss」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_15241071/article/details/80036346

  • 相关阅读:
    工具类---xlsx文件读写
    2021上半年第二次作业总结
    2021上半年第一次作业总结
    C语言II博客作业04
    C语言II—作业03
    C语言II博客作业02
    C语言II博客作业01
    win7开启snmp服务实现监控过程展现
    台湾某医学会sql注入漏洞
    测试面试题(持续总结中)
  • 原文地址:https://www.cnblogs.com/linwenbin/p/12701023.html
Copyright © 2011-2022 走看看