如何判断js数据类型

js数据类型:基本型和复杂型

基本数据类型:Number、String、Boolean、null、undefined

复杂型:Object


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";};



方法一::typeof

常用语判断基本数据类型,对于数组或对象只能判断是object

alert(a)     ------------>  string

alert(b)     ------------>  number

alert(c)     ------------->  object

alert(d)    ------------->   object

alert(e)     ------------->   function

alert(f)      ------------->  function



方法二:instanceof

alert(c instanceof Array)  -------->   true

alert(d instanceof Date)   -------->   true

alert(e instanceof Function)  -------->   true

alert(f instanceof Function)   -------->   false


注意:instanceof后面必须是对象类型,并且大小写不能写错。适合条件选择和分支。


方法三:constructor

alert(c.constructor === Array) ----------> true

alert(d.constructor === Date) -----------> true

alert(e.constructor === Function) -------> true

注意: constructor 在类继承时会出错

eg,

      function A(){};

      function B(){};

      A.prototype = new B(); //A继承自B

      var aObj = new A();

      alert(aobj.constructor === B) -----------> true;

      alert(aobj.constructor === A) -----------> false;


方法四: prototype

alert(Object.prototype.toString.call(a) === ‘[object String]’) -------> true;

alert(Object.prototype.toString.call(b) === ‘[object Number]’) -------> true;

alert(Object.prototype.toString.call(c) === ‘[object Array]’) -------> true;

alert(Object.prototype.toString.call(d) === ‘[object Date]’) -------> true;

alert(Object.prototype.toString.call(e) === ‘[object Function]’) -------> true;

alert(Object.prototype.toString.call(f) === ‘[object Function]’) -------> true;

大小写不能写错,比较麻烦,但胜在通用。



总结:一般用typeof判断就行,遇到想要知道Object类型的话用instanceof或者constructor



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值