javascript 判断一个对象为数组的方法
2017-05-03 08:58
666 查看
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(…)
总结
通过上面的几种判断对象为数组对象的方法分析,使用Array.isArray(arr)和Oblect.prototype.toString.call(arr)是比较好的方法。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
相关文章推荐
- javascript中判断一个对象是否是数组的几种方法
- javascript 判断 一个对象是不是 数组的方法
- js判断一个对象为数组的方法
- JavaScript 判断一个对象{}是否为空对象的简单方法
- 用JavaScript判断一个对象是否数组?
- JavaScript数组对象实现增加一个返回随机元素的方法
- javaScript中判断一个对象是否是数组
- JavaScript判断一个对象是否为数组
- Javascript如何判断一个变量是普通变量还是数组还是对象?
- JavaScript中判断数组,对象,布尔,函数,数字等原型的方法
- JavaScript判断变量是对象还是数组的方法
- 从javascript判断一个对象是否为数组中学习js语法
- javascript如何判断一个对象是不是数组
- 判断一个对象是不是JavaScript数组(怎样判断一个变量是数组)
- javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性
- JavaScript中判断变量是数组、函数或是对象类型的方法
- JavaScript中如何判断一个对象是不是数组
- JavaScript判断一个变量是对象还是数组
- JavaScript数组对象实现增加一个返回随机元素的方法
- Javascript判断一个对象是否为数组