JavaScript类型的检测
来源:互联网 发布:淘宝商品如何靠前 编辑:程序博客网 时间:2024/05/22 03:37
JavaScript有两种数据类型,基本类型和引用类型。
基本类型包括:数字,字符串,布尔值,undefined;
引用类型包括:Object,Array,RegExp。
用typeof可以基本上区分开基本类型和引用类型,除了null。
(function () {console.log(typeof 1); //numberconsole.log(typeof 'kk'); //stringconsole.log(typeof true); //booleanconsole.log(typeof undefined); //undefinedconsole.log(typeof null); //objectconsole.log(typeof {}); //objectconsole.log(typeof []); //objectconsole.log(typeof /\d/); //object})();
因此,可通过下列代码区分基本类型与引用类型:
(function () {var test = 'test';var checkType = function (data) {if (typeof data === null) {return '基本类型';} else if (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean' || typeof data === 'undefined') {return '基本类型';} else {return '引用类型';}};console.log(checkType(test)); //基本类型})();
注:typeof检测正则表达式时,在safari5及chrome7以下版本返回function,这是因为ECMA-262规定任何内部实现call方法的对象都应该在应用typeof操作符时返回function。
区分开基本类型与引用类型后,也许我们还想从引用类型中找出不同值的对象,比如Object,Array,RegExp等,这就需要另一个操作符instanceof。它是根据对象的原型链来判断的:(function () {var reg = new RegExp(),obj = {},arr = [];console.log(reg instanceof RegExp); //trueconsole.log(obj instanceof Object); //trueconsole.log(arr instanceof Array); //trueconsole.log(function () {} instanceof Function); //true})();
注:所有引用类型都是Object的实例,所以在检测一个引用类型值和Object构造函数时,都返回true。如:
console.log([] instanceof Object); // true
如果页面包含iframe,而且需要在iframe之间的变量进行类型判断,则需要采用下面的方法(因为iframe都拥有独自的window对象,而且引用类型也是各自独立的,所以上述方法无法正确识别数据类型):
(function () {// 判断类型var arr = [1, 2],reg = /\d/;function isArray(val) {return Object.prototype.toString.call(val) === '[object Array]';}function isFunction(val) {// 由于ie以COM形式实现函数,所以此函数不能在ie下不能正常使用return Object.prototype.toString.call(val) === '[object Function]';}function isRegExp(val) {return Object.prototype.toString.call(val) === '[object RegExp]';}function isNativeJSON(val) {// 判断是否为原生JSON对象return window.JSON && Object.prototype.toString.call(val) === '[object JSON]';}console.log(isArray(arr)); // trueconsole.log(isFunction(function () {})); // trueconsole.log(isRegExp(reg)); // trueconsole.log(isArray(reg)); // falseconsole.log(isNativeJSON(JSON)); // true})();
0 0
- JavaScript类型的检测
- JavaScript 的类型检测
- javascript的类型检测
- JavaScript的类型检测
- javascript的数组类型检测
- JavaScript安全的类型检测
- javascript检测对象类型的方法
- 对javascript中的检测类型的理解
- javascript 浏览器类型检测
- Javascript类型检测
- javascript 类型检测
- JavaScript中类型检测
- javascript 类型检测
- JavaScript类型检测
- JavaScript-数据类型-类型检测
- JavaScript检测浏览器类型
- JavaScript类型检测详解
- JavaScript 类型检测
- 日语学习之歌曲 想い出がいっぱい 2
- Hduoj2955【01背包】
- jquery 点击某行变换背景颜色,其他行还原为原来颜色
- xcode6 关于iphone6、iphone6plus适配(一)
- 理解 Node.js 里的 process.nextTick()
- JavaScript类型的检测
- pthread_exit() in main()
- VS自带WPF,Silverlight控件样式和模板
- NGUI的切片Sliced Sprite的制作
- memcache初步认识(文稿)
- Ubuntu下Python版本管理 pyenv
- ubuntu 安装 TM2009 QQ2013
- Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
- js去掉字符串前后空格的五种方法