美文网首页
underscore一些优雅的写法

underscore一些优雅的写法

作者: 子皙丶 | 来源:发表于2020-03-04 21:00 被阅读0次

    1. 数组检测

    _.isArray = function(array){
      return toString.call(array) === "[object Array]"
    }
    

    2. 各个类型检测

    var types = ["Function", "String", "Object", "Number", "Boolean"]
    _.each(types, function(name) {
        _["is" + name] = function(obj) {
            return toString.call(obj) === "[object " + name + "]";
        }
    });
    

    3. 获取一个对象的keys

    var hasEnumbug = ({
        toString: null
    }).propertyIsEnumerable("toString");
    var list = ["hasOwnProperty", "constructor", "isPrototypeOf", "propertyIsEnumerable", "toLocaleString", "toString",
        "valueOf"
    ];
    
    _.keys = function(obj) {
        var result = [];
        var name, prop;
        //判断是不是对象
        if (!_.isObject(obj)) {
            return [];
        }
        //Object是否有着keys方法
        if (Object.keys) {
            return Object.keys(obj);
        }
        //如果没有keys方法,则遍历所有属性,然后返回数组
        for (name in obj) {
            result.push(name);
        }
        //解决IE9 以下的bug
        if (!hasEnumbug) {
            for (var i = 0; i < list.length; i++) {
                prop = list[i];
                if (obj[prop] !== Object.prototype[prop]) {
                    result.push(prop);
                }
            }
        }
        return result;
    }
    
    1. undefined的表示
      void 0来表示undefined

    相关文章

      网友评论

          本文标题:underscore一些优雅的写法

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