jQuery.isArray实现小析

来源:互联网 发布:宾馆收银软件 编辑:程序博客网 时间:2024/06/06 08:55

       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的浏览器实现的代码,如下图所示。

 


 

 

原创粉丝点击