jQuery1.6 使用方法二
jQuery1.6 使用方法二
发布时间:2016-12-30 来源:查字典编辑
摘要:makeArray:function(array,results){//转换一个类似数组的对象成为真正的JavaScript数组。resul...

makeArray: function( array, results ) {//转换一个类似数组的对象成为真正的JavaScript数组。 results为可选参数

var ret = results || [];//results作为存放arry的数组,如果没有定义就设置为空数组

if ( array != null ) {{//window,String,Function,Array类型的.length不为undefined;(document.getElementById IE 为undefined,jQuery.type(document.getElementById )为object,所以类似这样的方法在IE下比较特别,可以jquery里的type方法)

var type = jQuery.type( array );

if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) )

push.call( ret, array );// 传入的对象不是数组,就push加入ret数组中

} else {

jQuery.merge( ret, array );//传入对象是数组或者类似数组,直接合并到ret数组中

}

}

return ret;

},

inArray: function( elem, array ) {//搜索数组中指定值并返回它的索引(如果没有找到则返回-1)。

if ( indexOf ) {//ECMA - 262标准的浏览器都支持,IE系列要到IE9才支持Array.prototype.indexOf,

return indexOf.call( array, elem );

}

for ( var i = 0, length = array.length; i < length; i++ ) {//IE9以下版本,通过循环数组来判断

if ( array[ i ] === elem ) {

return i;

}

}

return -1;

},

merge: function( first, second ) {//合并数组

var i = first.length,

j = 0;

if ( typeof second.length === "number" ) {//简单检测对象是否有length属性,有则循环添加到操作数组后面

for ( var l = second.length; j < l; j++ ) {//String,Array类型

first[ i++ ] = second[ j ];

}

} else {

while ( second[j] !== undefined ) {

first[ i++ ] = second[ j++ ];

}

}

first.length = i;

return first;

},

grep: function( elems, callback, inv ) {//查找满足过滤功能数组元素。原始数组不受影响。

var ret = [], retVal;

inv = !!inv;//转化成布尔值类型,如果没有明确指定inv或者指定为false,inv=false;

for ( var i = 0, length = elems.length; i < length; i++ ) {

retVal = !!callback( elems[ i ], i );//转化成布尔值类型

if ( inv !== retVal ) {//callback返回的结果如果与inv相反,即保留

ret.push( elems[ i ] );

}

}

return ret;

},

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类