摘要:学习冴羽的博客检测复杂类型
plainObject
plainObject来自于jQuery,通过{}
与new Object
创建的对象和没有原型的对象被认为是 plainObject ——纯粹的对象,可以区别用 typeof 都会返回 object 的 null、数组、宿主对象(documents)等
1 | // 用来存放 toString 映射结果的对象 |
toString 方法和原型关系参考Object对象和原型及原型链
空对象
jQuery 中 isEmptyObject 方法用来判断是否是空对象
1 | function isEmptyObject(obj) { |
不止空对象返回 true,还有如 null、undefined、数字、布尔值、空字符串、空数组在chrome下也会返回 true,其他浏览器表现不一
window对象
window 对象有一个 window 属性指向自身,由此可以判断 window 对象。也可以使用 type 函数用 tostring 来判断,但是各个浏览器显示并不一致
1 | function isWindow(obj) { |
DOM元素
判断是不是 DOM 元素
1 | function isElement(obj) { |
(类)数组
判断数组和类数组
1 | function isArrayLike(obj) { |
注意最后返回true的三种情况:
1.类型为 array 的肯定是数组
2.length 属性值为0的对象,包括空的 arguments 对象
3.length 属性值的类型为 number,且最后一个元素obj[length - 1]
存在的类数组