首页 > 代码库 > jquery源码--isWindow isArraylike makearray
jquery源码--isWindow isArraylike makearray
1.$.isWindow 判断是不是window对象
var isWindow = function(obj){ return obj != null && obj == obj.window;//window对象有个window属性指向自己 }
2.isArraylike 判断一个对象是不是数组或类数组对象
var isArrayLike = function(obj){ var length = obj.length, type = $.type(obj); if(type == ‘function‘ || $.isWindow(obj) ){ //function和window都有length属性 return false; } if(obj.nodeType == 1 && length){ return true; } return type === ‘array‘ || length === 0 || typeof length === ‘number‘ && length > 0 && (length - 1) in obj; // typeof length === ‘number‘ && length > 0 && (length - 1) in obj就是针对类数组对象的
/*类数组对象举例
*var obj = {‘0‘ : 0,‘1‘ : 1, ‘2‘ : 2,‘length‘ : 3}
*/ }
3.$.makeArray() 强制转换成数组类型
var makeArray = function(arr, result){ var ret = result || []; if(arr != null){ if(isArraylike(arr)){//string array $.merge(ret, typeof arr === ‘string‘ ? [arr] : arr);//$.merge可以修改第一个参数 }else{ [].push.call(arr); } } return arr; };
下面是各种数值类型作为Object参数时的返回,例如Object(true),它返回Boolean {},string类型返回一个类数组对象,array类型直接返回一个数组,date类型返回一长串,number类型返回number {},等等。所以通过isArraylike函数过滤之后,只剩下array和string类型了。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。