美文网首页
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