5.26 isObject

5.26.1 语法

_.isObject(object)

5.26.2 说明

如果object是一个对象,返回true。需要注意的是JavaScript数组和函数是对象,字符串和数字不是。

5.26.3 对象、数组、函数返回true

_.isObject({});
_.isObject(alert);
_.isObject([]);
_.isObject(new Number(1));

5.26.4 不是对象的情况返回false

_.isObject(1);
_.isObject('1');
_.isObject(null);
_.isObject(undefined);

5.26.5 用typeof无法区分object

typeof []; //=> 'object'
typeof {}; //=> 'object'
typeof function(){}; //=> 'function'
typeof null; // 'object'

5.26.6 源码解读

_.isObject = function(obj) {
    var type = typeof obj;

    //如果是函数就认为是object
    //如果object并且转为布尔值为true才为object,排除了null的情况。
    return type === 'function' || type === 'object' && !!obj;
};