几个需要经常用到的类型判断:
自定义一个类似于typeof的函数,提供更多的类型判断。
class2type[toString.call(obj)] 是对class2type的取值
在后面通过循环对class2type赋予相应的键值对,
最终在class2type保存的是
所以当调用type传入的参数为array对象时,调用toString.call(array)返回[object Array],所以对应class2type['[object Array]']即为array。
如果传入的参数为null,则类型返回'null',基本上可以返回各种常用对象类型,如'function', 'array','regexp'……而不是统一返回object。
判断是否为函数类型:
判断是不是window对象:
判断是不是document对象:
判断是否为object对象:
判断是否为{}对象:
判断是否为类数组:arguments就属于类数组,或者$('div')这种,可以用下标读取,看起来像数组,但又不是真正的数组的。
改造成if else结构的话:
应该就比较容易看懂了。
注:多看几遍zepto源码之后,发现其中用到了大量的三目运算符(? :)和按位与、按位或,需要特别了解这三者。