现在的位置: 首页 > 综合 > 正文

jQuery.isArray实现小析

2014年01月07日 ⁄ 综合 ⁄ 共 923字 ⁄ 字号 评论关闭

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

 

 

 

抱歉!评论已关闭.