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

  • 相关阅读:
    android升级软件版本号,您安装后的新版本号,成功安装画面没有出现,或直接回到桌面
    Linux下安装Tomcat服务器和部署Web应用
    Linux下开启mysql数据库的远程访问权限
    【项目管理和构建】——Maven简介(一)
    用maven搭建多模块项目
    Maven之自定义pom类型的基础项目
    Maven之搭建本地私服(nexus)仓库
    Maven之自定义archetype生成项目骨架(一)
    Maven多模块项目搭建
    安装maven之后,cmd提示mvn不是内部命令的解决办法
  • 原文地址:https://www.cnblogs.com/linwenbin/p/12701023.html
Copyright © 2011-2022 走看看