如何判断对象是否数组?
来源:互联网 发布:鼠标指针美化软件 编辑:程序博客网 时间:2024/04/30 22:58
在某些情况下,我们可能需要检测一个对象是不是数组,这听起来似乎很简单,实际上并不是这样。
新建一个数组:
var arr=['hello','word']
首先我们会想到typeof操作符进行尝试,typeof的功能为检查某个变量为对象类型还是基本类型,但使用typeof检查arr进行检测时,仅返回object,js中很多数据类型都是object,因此typeof无法判断一个对象是否数组;
其次我们会想到,检测变量类型的方法即为检测该对象是否是另一个对象的实例,instanceof操作符正是用于执行这种检测的,使用instanceof可以检测第一个操作数的对象链是否与第二个操作数的对象链完全相同,简单的说,即为检测X是否为Y的一个实例:
document.write(arr instanceof Array) //true
类似地,我们还可以检测对象的构造函数是否一样来检测一个对象是否为数组。当创建任何数组时,都会自动地调用Array对象的构造函数,因此,可以使用对象的constructor属性检测其构造函数是否与Array对象的构造函数相同,从而判断对象是否为数组。
document.write( arr.constructor == Array ) //true
instanceof和constructor看似很有希望成功,但是,当检查存在于其他全局作用域中的数组时,这两种方法将失败。
那是不是可以通过数组对象所特有的一个方法join()方法来判定对象是否是数组呢?我们知道,方法是可以自定义的,当某个对象自定义方法也叫join()时,这种想法被否决了。
那么,是否存在一种能够可靠地检测出对象是否数组的方法?答案当然是YES!那就是在被检测对象的上下文中调用toString()方法,然后检测toString()返回的结果字符串:
function isArray( obj ){ return Object.prototype.toString.apply(obj)==='[object Array]'}
但是,不能将该方法放在任何对象的prototype属性中,否则在进行跨框架页的检测时该方法将失败。
- 如何判断对象是否数组?
- 如何判断是否是数组
- 如何判断对象是否“存活”
- 如何判断对象是否存在
- JavaScript判断对象数组是否包含对象
- 判断获取对象是否为数组
- 判断一个对象是否是数组
- 判断一个对象是否为数组
- 判断数组中是否包含某个对象
- 判断是否为js数组对象
- java判断对象是否是数组
- 如何判断PHP数组是否为空
- 如何判断数组是否存在重复元素
- 如何判断Javascript对象是否存在
- 如何判断Javascript对象是否存在
- 如何判断Javascript对象是否存在
- 如何判断Javascript对象是否存在
- 如何判断Javascript对象是否存在
- #define用法集锦
- UVA 10334 - Ray Through Glasses(高精度斐波那契)
- v8学习---添加js全局函数
- word里 怎么样自动生成目录
- Merge Two Sorted Lists
- 如何判断对象是否数组?
- HDOJ 2059 龟兔赛跑
- OK6410挂在nfs文件系统
- Android四大基本组件介绍与生命周期
- TinyOS研究链接
- 插头DP——从不会到入门(POJ 2411,HDU 1565,HDU 2167,HDU 1693,Ural 1519)
- Linux下设置静态IP和获取动态IP的方法
- Android四大(五大)基本组件简介
- android 多个按钮中一个高亮