关于JavaScript数据检测的几种方法

来源:互联网 发布:怎么查看电脑网络端口 编辑:程序博客网 时间:2024/05/21 06:31

5种简单数据类型(基本数据类型):Undefined、Null、Boolean、Number和String。
1种复杂数据类型(引用数据类型):Object。

如何检测数据类型:
● typeof : console.log(typeof message),可以检测出undefined,boolean,string,number,object(对null检测也是object),function。
● instanceof: 语法:object instanceof constructor 。object为要检测的对象,constructor 为某个构造函数。instanceof运算符用来检测 constructor.prototype是否存在于参数 object的原型链上。
例如:function C(){};
var o=new C();
console.log(o instanceof C);//true;
原因:因为在o的原型链上:Object.getPrototypeOf(o)==C.prototype,应为C的原型 属性存在在o的原型链上。
问题:在多全局对象时有问题,不同的全局环境拥有不同的全局对象,从而拥有不同的内置类型构造函数。
● object.prototype.tostring.call(value):返回的为[object 类型],可以判断基本类型和引用类型。
基本类型:
Object.prototype.toString.call(null);//”[object Null]”;
Object.prototype.toString.call(undefined);//”[object Undefined]”;
Object.prototype.toString.call(“abc”);//”[object String]”;
Object.prototype.toString.call(123);//”[object Number]”;
Object.prototype.toString.call(true);//”[object Boolean]”;

引用类型:
函数:function fn(){console.log(“test”);}
Object.prototype.toString.call(fn);//”[object Function]”;
注:Object.prototype.toString.call(new fn());//”[object Object]”;

日期:var date = new Date();
Object.prototype.toString.call(date );//”[object Date]”;

数组:var arr = [1,2,3];
Object.prototype.toString.call(arr);//”[object Array]”;

正则表达式:var reg = /\d/;
Object.prototype.toString.call(reg);//”[object RegExp]”;

对象:Object.prototype.toString.call({});//”[object Object]”;

原创粉丝点击