isObject
"A surplus of effort could overcome a deficit of confidence." —Sonia Sotomayor
本文为 《lodash 源码阅读》 系列文章,后续内容会在 github 中发布,欢迎 star,gitbook 同步更新。
源码
/**
* 检查 value 是否为 Object 的
* [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
* (例如: arrays, functions, objects, regexes,new Number(0), 以及 new String(''))
*
* @since 0.1.0
* @category Lang
* @param {*} value 要检查的值。
* @returns {boolean} 如果 value 为一个对象,那么返回 true,否则返回 false。
*/
function isObject(value) {
const type = typeof value;
return value != null && (type == 'object' || type == 'function');
}
知识点
null
typeof null === 'object'; // 从一开始出现JavaScript就是这样的
typeof
val 类型
结果
Undefined
"undefined"
Null
"object"
Boolean
"boolean"
Number
"number"
String
"string"
Symbol
"symbol"
Object(原生,且没有实现 [[call]])
"object"
Object(标准宿主,且没有实现 [[call]])
"object"
Object(原生或者宿主且实现了 [[call]])
"function"
Object(非标准宿主且没实现 [[call]])
由实现定义,但不能是 "undefined", "boolean", "number", or "string"
相关链接
Last updated
Was this helpful?