分享

jQuery.isArray实现小析

 妖怪吃我一棒 2016-09-19

       jQuery是JavaScript编程中最广泛使用开源库,它最大的贡献就是屏蔽了浏览器的不同以及浏览器版本的不同,让开发人员能够集中精力在业务逻辑上,不用再纠结于浏览器的兼容问题。jQuery确实很强大(此处应该膜拜一下),但并不神秘,有时间研究一下jQuery的代码,可以少些盲目的崇拜多些理智的敬佩, 然后是一声叹息 - 原来是这样啊!这里就以jQuery.isArray作为个入门, 其1.9.0中的实现如下:

isArray: Array.isArray || function( obj ) { return jQuery.type(obj) === 'array';}

       Array.isArray(obj)是ECMAScript 5标准引入的新方法,用于判断JavaScript对象是否为数组类型,现在已经被主流浏览器广泛支持, 例如:IE9,10, 11。但是,为了兼容早期的不支持Array.isArray的浏览器,jQuery特别为此提供了一个实现,也就是 || 后面定义的 function (obj) , 其中type()和class2type的实现如下:

type: function( obj ) { return obj == null ? String( obj ) : class2type[ core_toString.call(obj) ] || 'object';},
core_toString = Object.prototype.toString,
// Populate the class2type mapjQuery.each('Boolean Number String Function Array Date RegExp Object'.split(' '), function(i, name) { class2type[ '[object ' + name + ']' ] = name.toLowerCase();});

        现在大部分的浏览器都是支持Array.isArray,可以将IE浏览器的Document Modes设置为较低的版本,如:IE7 standards, 调试进入isArray函数调用,就会走到 jQuery为不支持Array.isArray的浏览器实现的代码,如下图所示。


 

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多