jQery中类数组判断的实现原理及代码实现

//第二个类数组对象
//就像其文字所表达的意思,就是像数组,那就得想想数组有什么特性了

//此方法不可运行,需type,each方法配合
//附件里有可运行的代码
function isArrayLike (obj){
	var 
		length=obj.length;
		
	//判断为空
	if(obj==null){
		return false;
	}
	//判断,第一,如果对象中有length===0
	//这种如arguments
	//arguements举例在方法结束地方
				//如果对象中有length>0 and  (length-1 in) obj  形如{0:"1",1:"2",length:2}
				//[div#div1, div#div2, div#div3, item: function]
				//0: div#div1
				//1: div#div1
				//2: div#div1
				//length:3
		 //第二,我们判断的是对象,若是函数直接过,若是window也是直接过
		 //第三种就节点(node)  obj.nodeType===1 && length  值大于等于1//对于这一种既是元素节点,并且属性length大于0
		//第三没有找到对应的类型
		 //第四种数组类型直接通过
	if(isWindow(obj) ||typeof(obj)==="function"){
		return false;
	}
	
	
	//return type(obj)==="array" ||length===0 || (length>0 &&(length-1) in obj);
	//(obj.node===1 &&length)返回值是length,不是boolean,单独作为一种情况
	return type(obj)==="array" ||length===0 || (length>0 &&(length-1) in obj);
}

//这种如arguments
console.info(function(){
	console.info("str "+arguments);//str [object Arguments]
	console.info("str1 "+arguments.length);// str1 0
}());
console.info(function(){
	console.info("str "+arguments);//str  0:"aa" 1:"bb"
	console.info("str1 "+arguments.length);// str1 0
}("aa","bb"));

//到此结束
 

你可能感兴趣的:(jquery)