javascript如何判断一个对象为数组-创新互联
这篇文章主要介绍javascript如何判断一个对象为数组,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联服务项目包括绩溪网站建设、绩溪网站制作、绩溪网页制作以及绩溪网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,绩溪网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到绩溪省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!javascript 判断一个对象为数组的方法
数组对象
js的数组是无类型的:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型。数组的元素可以是对象或其他数组,这样就可以创建复杂的数据结构。
通常我们可以用一元运算符typeof来判断js的数据类型,但是对于数组这样一个特殊的对象却只能返回"object"
typeof [1,2,3] "object" typeof 100 "number" typeof false "boolean" typeof undefined "undefined" typeof NaN "number" typeof function(){} "function" typeof null "object"
判断数组的方法
instanceof
instanceof 是一个二元运算符,左边操作数是一个对象,不是的话返回false,右边操作数是一个函数对象或者函数构造器,不是的话返回false。原理是通过判断左操作数的对象的原型链上是否具有右操作数的构造函数的prototype属性。
[1,2] instanceof Array true
Array.isArray(arr)
这个ES5新增的一个Array方法,该方法是Array对象的一个静态函数,用来判断一个对象是不是数组。
Array.isArray([1,2]) true
如果页面里面有n个frame,就存在多个window,每个window都有自己的Array对象,比如确定子window里的某个数组是不是Array时,用instanceof这个方法就不行了
var fr=window.frames[0]; fr.onload=function(){ console.log(fr.arr instanceof Array);//false console.log(Array.isArray(fr.arr));//true //arr是另外一个页面的一个数组 }
Object.prototype.toString.call(arr) === “[object Array]”
Object.prototype.toString.call([1,2]) "[object Array]"
arr.constructor.name==='Array'
[1,2].constructor.name==='Array'; true
但是对象的constructor属性可以被改写,改写后用改方法判断就不行了
var arr=[1,2]; arr.constructor={}; arr.constructor.name === "Array" //undefined false
其他方法 可以通过数组的一些独有的方法判断该对象是不是数组,比如join,push等
var c=[1,2]; c.push('3');//3 console.log(c) [1, 2, "3"] var c="12"; c.push('3'); //Uncaught TypeError: c.push is not a function(…) var c=[1,2]; c.join(''); "12" var c='12'; c.join(''); //Uncaught TypeError: c.join is not a function(…)
以上是“javascript如何判断一个对象为数组”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联网站建设公司行业资讯频道!
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网站栏目:javascript如何判断一个对象为数组-创新互联
当前URL:http://ybzwz.com/article/dcejdo.html