//第二个类数组对象 //就像其文字所表达的意思,就是像数组,那就得想想数组有什么特性了 //此方法不可运行,需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")); //到此结束
jQery中类数组判断的实现原理及代码实现
最新推荐文章于 2021-06-04 12:31:15 发布