JS教程:数组类型检测和集合检测
有采取这种办法。
(2)检测特性已知的集合只有两种,所以还是检查这两种集合的特性吧。HtmlCollection有item方法,而arguments则有callee属性: if (testVar.item || testVar.callee) return 2; 这时,select元素开始搅局。它竟然包含HtmlCollectiond的所有特性。于是,还是要判断nodeType: if (!testVar.nodeType && testVar.item || testVar.callee) return 2; select元素被轰走了,万恶的ie开始捣乱。首先是XML的问题,某个ajax回调函数: function onSuccess(xhr) { 也就是说,在ie下,只要尝试检测xml节点或xml节点集合的方法都会报错。幸好还可以用typeof去对付它们。 function onSuccess(xhr) { 因此,代码就改成: if (!testVar.nodeType && typeof testVar.item != “undefined” || testVar.callee) return 2; 其次,是window对象的问题:ie下的window对象也有item方法。所以还是要检测window对象: if (!testVar.nodeType && typeof testVar.item != “undefined” && !testVar.alert || testVar.callee) return 2; 虽然检测特性容易出现失误,但是目前也只有这种办法了。 至此,终于折腾完,整个函数简写后就是: var isArray = function(testVar) { 目前还不知道有没有疏漏。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |