標籤:style blog http color io 2014 cti div
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類型了。