js判断是否为数组的函数: isArray()
来源:互联网 发布:农民补贴网络信息系统 编辑:程序博客网 时间:2024/06/04 18:53
今天刚好在学习支付宝 JS 框架 base.js 。瞄了一下,实现是这样的:
代码如下:
if (value instanceof Array ||(!(value instanceof Object) &&(Object.prototype.toString.call((value)) =='[object Array]') ||typeof value.length == 'number' &&typeof value.splice != 'undefined'&&typeof value.propertyIsEnumerable !='undefined' &&!value.propertyIsEnumerable('splice'))) {return 'array';}
怎么说呢,乱。当然,也可以说是,“史上最全”,它确实使用了最主流的方法,只是把他们都写一起了而已。
像我们所知道的,用 instanceof 和 constructor 是最直接的、简单的方式:
代码如下:
var arr = [];arr instanceof Array; // truearr.constructor == Array; //true
只是,由于在不同 iframe 中创建的 Array 并不共享 prototype。如果这样用。麻烦就来了。那么,如果要应用在框架中,这种方式肯定是行不通的。倒是,使用 Douglas Crockford 的填鸭式方法是可以解决这个问题(《JavaScript 语言精粹》P61):
代码如下:
var is_array = function(value) {return value &&typeof value === 'object' &&typeof value.length === 'number' &&typeof value.splice === 'function'&&!(value.propertyIsEnumerable('length'));};
不过,是否还有更简单的方法呢?其实,像我们自己用的,不就是了么?
代码如下:
Object.prototype.toString.call(value) =='[object Array]'
上面这种写法,是 jQuery 正在使用的。目前,淘宝的 kissy 也是使用这种方式。难道这不是目前最简洁,而且最有效的方式么?个人感觉内部框架写得有点累赘了。例行总结,最终方案:
代码如下:
var isArray = function(obj) {return Object.prototype.toString.call(obj)=== '[object Array]';}
判断类型,很酷。具体的,跟上面是一个道理:
代码如下:
var is = function (obj,type) {return (type === "Null"&& obj === null) ||(type === "Undefined" &&obj === void 0 ) ||(type === "Number" &&isFinite(obj)) ||Object.prototype.toString.call(obj).slice(8,-1)=== type;}
0 0
- js判断是否为数组的函数: isArray()
- js判断是否为数组的函数: isArray()
- 判断是否为数组的函数: isArray()
- java判断对象是否为数组 并且取得数组的值 --- 用instanceof或则isArray() 方法
- java判断对象是否为数组 并且取得数组的值 --- 用instanceof或则isArray() 方法
- 判断对象是否是数组instanceof和isArray
- JS、JQ判断变量是否为数组的方法(Array)
- 判断是否为js数组对象
- js 判断数组是否为空
- js 判断数组是否为空
- js判断一个变量是否为数组
- JS判断是否为正整数,浮点数的函数
- 判断数组是否包含某个元素的js函数
- isArray()函数(JavaScript中判断对象类型的种种方法)
- 判断一个js变量是否为函数
- Javascript数组类型检测:编写更强壮的isArray函数
- 判断是否为数组
- javascript判断是否为数组的方法
- NSDateFormatter HH vs hh
- JPA概要
- 关于WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解
- 对全文检索引擎xapian的学习(一)---索引
- C++ - 虚函数(virtual function)缺省参数的异常表现 及 正确使用方法
- js判断是否为数组的函数: isArray()
- IOS 开发环境是的证书和授权文件使用
- “全国云计算大数据创新项目评选”征集活动正式启动
- 如何查看远程主机CentOS的版本?
- @GeneratedValue 与 @GenericGenerator 主键生成策略
- 算法05:二分搜索算法——分治法Part1
- CTO俱乐部走进腾讯
- 用十张图解释机器学习
- Hessian实现Webservice