js数据类型判断的几种方法总结

2015-6-9 Jon js+jquery+ajax

js数据类型判断的几种方法总结
  首先定义一组变量:

var a = "zifuchuan",
    b = 100,
    c = true,
    d,
    e = [1,2,3],
    f = new Date(),
    g = function(){alert(1)},
    h = {},
    i = null;


1,最常见的判断方法:typeof
可判断类型(6种):number、 string、 boolean、 undefined、 object、 function
返回值(数据类型)
  举例:

console.log(typeof a);  //string
console.log(typeof(a)); //string
console.log(typeof b);  //number
console.log(typeof c);  //boolean
console.log(typeof d);  //undefined
console.log(typeof e);  //object
console.log(typeof f);  //object
console.log(typeof g);  //function
console.log(typeof h);  //object
console.log(typeof i);  //object
其中typeof返回的类型都是字符串形式,需注意,例如:
alert(typeof a == "string")  //true
alert(typeof a == String)    //false


2,判断已知对象类型的方法: instanceof
后面一定要是对象类型,并且大小写不能错,该方法适合一些条件选择或分支(若判断基本类型,借返回 false)。
可判断类型:数组、 日期、 对象
返回值(boolean)
  举例:


console.log(a instanceof Object);   //false
console.log(b instanceof Number);   //false
console.log(c instanceof Boolean);  //false
console.log(d instanceof Object);   //false
console.log(e instanceof Object);   //true
console.log(e instanceof Array);    //true
console.log(f instanceof Date);     //true
console.log(g instanceof Function); //true
console.log(h instanceof Object);   //true
console.log(i instanceof Object);   //false


3,接下来我们就用到另外一个利器:Object.prototype.toString.call
这是对象的一个原生原型扩展函数,用来更精确的区分数据类型。通用但稍繁琐的方法
大小写不能写错

var gettype=Object.prototype.toString;
console.log(gettype.call(a));       //[object String]
console.log(gettype.call(b));       //[object Number]
console.log(gettype.call(c));       //[object Boolean]
console.log(gettype.call(d));       //[object Undefined]
console.log(gettype.call(e));       //[object Array]
console.log(gettype.call(f));       //[object Date]
console.log(gettype.call(g));       //[object Function]
console.log(gettype.call(i));       //[object Null]
console.log(gettype.call(a)==='[object String]');     //true
console.log(gettype.call(e)==='[object Array]');      //true


4,根据对象的constructor判断: constructor
只能判断对象类型,和instanceof相似,但没有instanceof常用

console.log(e.constructor === Array)     //true
console.log(f.constructor === Date)      //true
console.log(g.constructor === Function)  //true
console.log(h.constructor === Object)    //true

注意: constructor 在类继承时会出错(不会继承父类的)
解决方法:让父类赋值给当前对象的constructor

分享这篇文章
赞助鼓励:如果觉得内容对您有所帮助,您可以支付宝(左)或微信(右):

声明:如无特殊注明,所有博客文章版权皆属于作者,转载使用时请注明出处。谢谢!

发表评论:

皖ICP备15010162号-1 ©2015-2022 知向前端
qq:1614245331 邮箱:13515678147@163.com Powered by emlog sitemap