js 数据类型检测

一、typeof  用来检测数据类型运算符 首先返回一个字符串,其次字符串中包含了对应的数据类型。如:

  "number","string","boolean","underfined","function","object"

  局限性:

    typeof null —》 object

    不能区分数组、正则、还是对象中的其他值,返回的都是object

二、instanceof 检测某个实例是否属于这个类,可以检测数组正则等  var arr =[];  console.log(arr instanceof Array)  -> true

  局限性:

       不能用来检测和处理字面量创建出来的基本数据类型的值;

     在类的原型继承中,检测出来的是不一定准确  Fn.prototype = new Array; var f = new Fn;  console.log(f instanceof Array)  -> true

 

三、constructor  作用和instanceof 非常相似,但是可以检测基本类型的值, var num = 1; console.log(num.constructor === Number)  -> true

  var arr = [ ];  console.log(arr.constructor === Array)  -> true;

  局限性:

  我们可以对类的原型进行重写,在重写的过程中可能会把constructor覆盖,导致检测的结果不一定正确

 

四、Object.prototype.toString.call()  // 最准确、最常用的检测方法,可以避免所有弊端

posted on 2018-04-10 00:16  ywx354980  阅读(110)  评论(0编辑  收藏  举报