zoukankan      html  css  js  c++  java
  • 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的各个地方,因此我将它们单独拿出来撰文。

  • 相关阅读:
    数据库性能优化之冗余字段的作用
    SQL里面的排序语句desc和ASC有什么区别
    Mybatis@options注解属性useGeneratedKeys,keyProperty,keyColumn的使用
    关于resultType与parameterType的基本使用和区别
    阿里云Centos7的部署springboot后mysql中文问号乱码
    LINUX下启动/停止/重启MYSQL
    CondenseNet:可学习分组卷积,原作对DenseNet的轻量化改造 | CVPR 2018
    MnasNet:经典轻量级神经网络搜索方法 | CVPR 2019
    MobileNetV1/V2/V3简述 | 轻量级网络
    ShuffleNetV1/V2简述 | 轻量级网络
  • 原文地址:https://www.cnblogs.com/firstdream/p/2342751.html
Copyright © 2011-2022 走看看