jQuery 1.6 源码学习(五)——core.js[5]之类型判断方法type

前些日子忙东忙西(比如忙着玩星际之类的,坏笑ing),博客也闲着,闲着闲着居然闲挂掉了~哎~没关系,反正这博客也是我的私人笔记 本,没人看,也就无所谓,昨天刚刚恢复,想起得接着记笔记才行。废话少说,万一本文还有读者借鉴学习呢就浪费看官们的宝贵时间了,\(^o^)/~

在历经四次分析之后,core.js文件中只剩下了零零星星一些方法,我把它们大致分为以下几类方法:

  1. 类型判断相关方法,如isFunction,isArray等;
  2. 对象操作相关方法,如merge,map等;
  3. 实用工具方法,如parseJSON,parseXML等;
  4. 其他内部方法,如access。

本文将介绍判断类型相关的方法

jQuery中公开了一组判断类型的方法,诸如isArray(),isFunction()等,这些方法的实现是通用的,比如isArray和isFunction方法:

1 isArray: Array.isArray || function( obj ) {
2     return jQuery.type(obj) === "array";
3 },
4 isFunction: function( obj ) {
5     return jQuery.type(obj) === "function";
6 },

它们均调用了type()方法:

1 type: function( obj ) {
2     return obj == null ?
3         String( obj ) : //obj为null时将会返回字符串“null”
4         class2type[ toString.call(obj) ] || "object";//注意toString是Object.prototype.toString的一个shortcut
5 },

而class2type被声明为jQuery内部的全局对象,其赋值代码是:

1 jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
2     class2type[ "[object " + name + "]" ] = name.toLowerCase();
3 });

看起来很绕弯儿,难道作者这样写是为了节省代码量?也可能是方便维护吧,比如万一javascript新标准更改类型名了或者作者想把所有类型改为大写输出了代码改起来要方便一些吧。好吧,其实这都不是事儿,只要理解了jQuery中是如何判断类型的就行了。

这组类型相关的方法作为jQuery内的基础方法存在,出现在了jQuery的各个地方,因此我将它们单独拿出来撰文。

原文地址:https://www.cnblogs.com/firstdream/p/2342751.html