源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

js判断是否为数组的函数: isArray()

  • 时间:2021-12-17 13:18 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:js判断是否为数组的函数: isArray()
今天刚好在学习支付宝 JS 框架 base.js 。瞄了一下,实现是这样的:
[url=http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray/]在不同 iframe 中创建的 Array 并不共享 prototype[/url]。如果这样用。麻烦就来了。那么,如果要应用在框架中,这种方式肯定是行不通的。倒是,使用 Douglas Crockford 的填鸭式方法是可以解决这个问题(《JavaScript 语言精粹》P61):
[u]复制代码[/u] 代码如下:
var is_array = function(value) { return value && typeof value === 'object' && typeof value.length === 'number' && typeof value.splice === 'function' && !(value.propertyIsEnumerable('length')); };
不过,是否还有更简单的方法呢?其实,像我们自己用的,不就是了么?
[u]复制代码[/u] 代码如下:
Object.prototype.toString.call(value) == '[object Array]'
上面这种写法,是 jQuery 正在使用的。目前,淘宝的 kissy 也是使用这种方式。难道这不是目前最简洁,而且最有效的方式么?个人感觉内部框架写得有点累赘了。例行总结,最终方案:
[u]复制代码[/u] 代码如下:
var isArray = function(obj) { return Object.prototype.toString.call(obj) === '[object Array]'; } ==============
UPDATE: 2010.12.31 00:01(出处) 判断类型,很酷。具体的,跟上面是一个道理:
[u]复制代码[/u] 代码如下:
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)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部