js函数区分数组和对象
2015-12-15 00:00
741 查看
摘要: 当数组作为操作数并使用typeof操作符时,其结果会返回"object",因为数组也是对象。但是这对于排除错误没有什么帮助
当数组作为操作数并使用typeof操作符时,其结果会返回"object",因为数组也是对象。但是这对于排除错误没有什么帮助,通常我们需要知道某个值是否为一个数组。有时候检查代码可以用是否存在length属性或一些数组方法,但是这些检查并非万能,我们无法确定一个非数组对象就不能拥有这些属性和方法。还可以使用instanceof Array进行检查,但是这种检查存在兼容性问题。
ECMAScript 定义了Array.isArray(),方法,接受参数为数组时返回true。但是有些环境不支持这种方法,最好的检查数组性质的方法是Object.prototype.toString.call方法,若是数组会返回[object Array],若是对象则为[object object]。因此要用如下方法检测:
当数组作为操作数并使用typeof操作符时,其结果会返回"object",因为数组也是对象。但是这对于排除错误没有什么帮助,通常我们需要知道某个值是否为一个数组。有时候检查代码可以用是否存在length属性或一些数组方法,但是这些检查并非万能,我们无法确定一个非数组对象就不能拥有这些属性和方法。还可以使用instanceof Array进行检查,但是这种检查存在兼容性问题。
ECMAScript 定义了Array.isArray(),方法,接受参数为数组时返回true。但是有些环境不支持这种方法,最好的检查数组性质的方法是Object.prototype.toString.call方法,若是数组会返回[object Array],若是对象则为[object object]。因此要用如下方法检测:
if(typeof Array.isArray === "undefined"){ Array.isArray = function(arg){ return Object.prototype.toString.call(arg) === "[object Array]"; }; } //调用Array.isArray()
相关文章推荐
- javascript 学习笔记 【Date 类型】
- webBrowser invoke js
- string 2 json
- js 删除确认
- javascript 获取宽度高度(转)
- 关于使用json 字符串转换为字典问题
- JSP与JS相互传值相关问题
- JS 定时器和数字时钟
- javascript的执行环境及作用域概念总结与理解
- js学习笔记(一)
- javascript函数式编程要掌握的知识点讲解
- XML_JSON数据解析
- JavaScript学习随记——属性类型
- JSP指令元素:page指令 include指令 tag lib指令。
- JavaScript 闭包
- JavaScript This的用法
- JavaScript 执行上下文环境
- JavaScript 继承
- JavaScript 正则表达式
- JavaScript RegExp 对象