有时候我们会遇到这样的情况:在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空。如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型(数字、字符串、数组、对象等等),通过 JSON.stringify(data) 进行序列化后再传递。
在这里定义如下的数据值为“空值”:
"codetitle">复制代码 代码如下:
<SPAN style="BACKGROUND-COLOR: rgb(255,255,255)">if(typeof data === 'number') {
//deal with numbers
}</SPAN>
但 typeof 返回的类型字符串只有 'object'、'function'、'number'、'boolean'、'string'、'undefined' 这六种,很多原生对象如 Date、RegExp 对象无法与用 {} 创建的对象进行区分。另外,typeof 对于一些基本数据类型如 (String、Number、Boolean) 与其对应的基本包装类型数据会分别返回不同值,如:
复制代码 代码如下:
<SPAN style="BACKGROUND-COLOR: rgb(255,255,255)">console.log(typeof false); //'boolean'
console.log(typeof new Boolean(false)); //'object'
console.log(typeof 1); //'number'
console.log(typeof new Number(1)); //'object'
console.log(typeof ''); //'string'
console.log(typeof new String('')); //'object'</SPAN>
这对我们的判断也有一定的影响。
用 instanceof?这只能判断对象,而且存在多 frame 时多个同类对象不共享 prototype 的问题,从其他 frame 中取得的对象无法正确判断。
还好,还有一个最简单也最可靠的方法:Object.prototype.toString。对于不同类型的数据,这个方法可以返回 '[object Object]'、'[object Array]'、'[object String]' 这样的字符串,非常方便判断。需要注意的是,在 IE8 及其以下浏览器中,这个方法对于null、undefined、window 等都会返回 '[object Object]',不过还好,这并不影响我们使用它判断空对象。
下面直接上代码,说明就看注释吧。
复制代码 代码如下:
var isEmptyValue = function(value) {
var type;
if(value == null) { // 等同于 value === undefined || value === null
return true;
}
type = Object.prototype.toString.call(value).slice(8, -1);
switch(type) {
case 'String':
return !$.trim(value);
case 'Array':
return !value.length;
case 'Object':
return $.isEmptyObject(value); // 普通对象使用 for...in 判断,有 key 即为 false
default:
return false; // 其他对象均视作非空
}
};
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 群星《2024好听新歌38》AI调整音效【WAV分轨】
- 台湾荷东《周末狂热1》[WAV+CUE][1.1G]
- 群星《Hi.Fi.怀旧金曲.Vol.1》[低速原抓WAV+分轨][996M]
- 汪峰 白金超精选《生来彷徨2CD》[WAV+CUE][1.5G]
- 孙露《寂寞撩人》限量1:1母盘直刻低速原抓[WAV+CUE]
- 20世纪伟大的钢琴家《盖扎·安达》2CD[WAV分轨]
- 龚玥《微风拂面HQCD》[低速原抓WAV+CUE]
- 群星《新说唱2024 第12期 (上)》[320K/MP3][117.13MB]
- 群星《新说唱2024 第12期 (上)》[FLAC/分轨][626.34MB]
- 彦希《Golden Blue》[320K/MP3][111.78MB]
- 中岛美雪《美雪集原曲流行极品》[正版原抓WAV+CUE]
- 【古典音乐】《最优美的格里格音乐作品》2CD[FLAC+CUE/整轨]
- 中央乐团《春芽(63首世界名曲联奏)》APE
- 彦希《Golden Blue》[FLAC/分轨][587.25MB]
- 群星《我们的歌第六季 第1期》[320K/MP3][90.72MB]