美文网首页程序员
javascript深入理解系列(十)——判断基本类型的方法ty

javascript深入理解系列(十)——判断基本类型的方法ty

作者: 悦者生存 | 来源:发表于2018-10-07 18:23 被阅读6次

    javascript深入理解系列文章网址
    https://www.jianshu.com/p/451eed9094f5

    1.typeof(能判断6种类型)

    typeof其实就是判断参数是什么类型的实例,就一个参数

    typeof 一般只能返回如下几个结果(一共六个):

    "number"、"string"、"boolean"、"object"、"function" 和 "undefined"。(这些值都是小写)
    
    (温馨提示:此处要和js的数据类型区别开)
    js的简单数据类型:string,number,boolean,null,undefined
    js的复杂数据类型:object
    
    运算数为数字 typeof(x) = "number" 
    
    字符串 typeof(x) = "string" 
    
    布尔值 typeof(x) = "boolean" 
    
    特别注意**对象,数组和null typeof(x) = "object"**(因为null和数组都属于对象) 
    
    函数 typeof(x) = "function" 
    

    2.instanceof

    要知道使用typeof判断array,null都会返回"object",所以这个时候可以使用instanceof判断
    instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。(直白点说就是判断左边的值是否是右边对象的实例)

    
    例如:var a=[1,2];
    
    a instanceof Array则为true
    
    因为console.log(a.__proto__===Array.prototype);为true所以上面为true
    其实也就是判定a是Array的实例
    

    3.Object.prototype.toString.call(value)(至少14中类型)

    1.判断基本类型:(输出的值是字符串,并且用中括号括起来,左边是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]”
    

    2.判断原生引用类型:

    函数类型
    Function fn(){console.log(“test”);}
    Object.prototype.toString.call(fn);//”[object Function]”
    日期类型
    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 = /[hbc]at/gi;
    Object.prototype.toString.call(arr);//”[object Array]”
    自定义类型
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    var person = new Person("Rose", 18);
    Object.prototype.toString.call(arr); //”[object Object]”
    **很明显这种方法不能准确判断person是Person类的实例,而只能用instanceof 操作符来进行判断,如下所示:
    console.log(person instanceof Person);//输出结果为true**
    

    3.判断原生JSON对象:

    var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON);
    console.log(isNativeJSON);//输出结果为”[object JSON]”说明JSON是原生的,否则不是;
    注意:Object.prototype.toString()本身是允许被修改的,而我们目前所讨论的关于Object.prototype.toString()这个方法的应用都是假设toString()方法未被修改为前提的。
    

    参考:http://www.zhufengpeixun.cn/JavaScriptmianshiti/2014-02-28/271.html

    相关文章

      网友评论

        本文标题:javascript深入理解系列(十)——判断基本类型的方法ty

        本文链接:https://www.haomeiwen.com/subject/estjiftx.html