jquery的isplainObject, isEmptyObject, isArraylike

//通过对象字面量或new,注意对Null的类型检查
function isPlainObject(obj) {
if (typeof obj !== 'object' || obj === null) return false

let proto = obj
while (Object.getPrototypeOf(proto) !== null) {
proto = Object.getPrototypeOf(proto)
}

return Object.getPrototypeOf(obj) === proto
}
//附加type进行判断,需要考虑null
function isEmptyObject( obj ) {

    var name;

    for ( name in obj ) {
        return false;
    }

    return true;

}
//每个函数有length属性,是期望接受到的参数长度。

//类数组对象坑定存在length-1项的。
function isArrayLike(obj) {
// obj 必须有 length属性
var length = !!obj && "length" in obj && obj.length;
var typeRes = type(obj);

// 排除掉函数和 Window 对象
if (typeRes === "function" || isWindow(obj)) {
    return false;
}

return typeRes === "array" || length === 0 ||
    typeof length === "number" && length > 0 && (length - 1) in obj;

}

你可能感兴趣的:(jquery的isplainObject, isEmptyObject, isArraylike)