美文网首页
柯里化 类型判断

柯里化 类型判断

作者: rocneal | 来源:发表于2016-10-12 00:58 被阅读0次
    /**
     * 柯里化函数 & this绑定
     * @param  {Function} fn      原函数
     * @param  {Object}   context this作用域
     * @return {Function}         柯里化函数
     */
    function bind(fn, context) {
        var args = [].slice.call(arguments, 2);
        return function() {
            var innerArgs = [].slice.call(arguments);
            return fn.apply(context, args.concat(innerArgs));
        };
    }
    
    /**
     * 类型判定函数(待柯里化)
     * @param  {String}  t 具体数据类型值,例如:String、Object、Number...
     * @param  {Object}  o 需要判断的数据
     * @return {Boolean}   是否为数据的类型值
     */
    function isType (t, o) {
        return {}.toString.call(o) === '[object '+ t +']';
    }
    
    // 柯里化出具体类型的判定函数
    var isArray = bind(isType, {}, 'Array'),
        isObject = bind(isType, {}, 'Object'),
        isNumber = bind(isType, {}, 'Number'),
        isDate = bind(isType, {}, 'Date'),
        isBoolean = bind(isType, {}, 'Boolean'),
        isFunction = bind(isType, {}, 'Function'),
        isString = bind(isType, {}, 'String');
    

    How to use ?

    e.g. :

        var arr = [1, 2, 3];
        
        if (isArray(arr)) {
            // do sth
        }
        
        ...
    

    相关文章

      网友评论

          本文标题:柯里化 类型判断

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