JS判断数据方法大全

支付宝 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; // true 
arr.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; 
}

 

时间: 2024-08-16 00:20:00

JS判断数据方法大全的相关文章

js正则验证方法大全

js正则验证方法大全 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

js刷新页面方法大全(转)

刷新页面实现方式总结(HTML,ASP,JS) 转载  2008-11-13   作者:    我要评论 多种方法实现页面的刷新代码 定时刷新: 1,<script>setTimeout("location.href='url'",2000)</script> 说明:url是要刷新的页面URL地址 2000是等待时间=2秒, 2,<meta name="Refresh" content="n;url"> 说明:

js刷新页面方法大全

本文介绍下,用js刷新当前页面的几种方法,包括reload方法.replace方法.自动刷新方法等.有需要的朋友参考下吧 如何实现刷新当前页面呢?借助js你将无所不能. 1,reload 方法,该方法强迫浏览器刷新当前页面.语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页.true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新") 2,replace 方法

正则表达式控制Input输入内容 ,js正则验证方法大全

https://blog.csdn.net/xushichang/article/details/4041507 正则表达式控制Input输入内容 2009年04月01日 17:15:00 阅读数:21747 不能输入中文 <input type="text" name="textfield"  onkeyup="this.value=this.value.replace(/[^/da-z_]/ig,'');"/>只能输入 数字和下划

JS判断数据类型方法

var a = "iamstring.";var b = 222;var c= [1,2,3];var d = new Date();var e = function(){alert(111);};var f = function(){this.name="22";}; **1.最常见的判断方法:typeof **alert(typeof a) ------------> stringalert(typeof b) ------------> numbe

Jquery / js 判断数据类型方法

当想要判断文本框中的值是否为自己想要的类型时,可以通过一些方法作出判断,这里对于光标离开文本框时判断文本框中输入的是否是数值类型,如果不是,做出提示 $("#WORKYEARS").blur(function () {//光标离开事件 var WORKYEARS = $.trim($("#WORKYEARS").val());//取出文本框的值 if (WORKYEARS != "") { var isok = isNumber(WORKYEAR

分针网—每日分享:js刷新页面方法大全

如何实现刷新当前页面呢?借助js你将无所不能. 1,reload 方法,该方法强迫浏览器刷新当前页面. 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页.true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新") 2,replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过"前进

js 判断数据是否为空

// var a = ""; // var a = " "; // var a = null; // var a = undefined; // var a = []; // var a = {}; // var a = NaN; if(a === undefined) { // 只能用 === 运算来测试某个值是否是未定义的 console.log("为undefined"); } if(a == null) { // 等同于 a === un

JS判断数据是否是JSON类型

var isJson = function(obj){     var isjson = typeof(obj) == "object" && Object.prototype.toString.call(obj).toLowerCase() == "[object object]" && !obj.length;     return isjson; }