zoukankan      html  css  js  c++  java
  • Object.prototype.toString.call()方法

    在JavaScript里使用typeof判断数据类型,只能区分基本类型,即:number、string、undefined、boolean、object
    对于null、array、function、object来说,使用typeof都会统一返回object字符串。
    要想区分对象、数组、函数、单纯使用typeof是不行的。在JS中,可以通过Object.prototype.toString方法,判断某个对象之属于哪种内置类型。
    分为null、string、boolean、number、undefined、array、function、object、date、math。

    1. 判断基本类型

    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(reg); // "[object RegExp]"
    
    **自定义类型**
    function Person(name, age) {
        this.name = name;
        this.age = age;
    }
    var person = new Person("Rose", 18);
    Object.prototype.toString.call(arr); // "[object Object]"
    

    无法区分自定义对象类型,自定义类型可以采用instanceof区分

    console.log(person instanceof Person); // true
    

    3.判断原生JSON对象

    var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON);
    console.log(isNativeJSON);//输出结果为”[object JSON]”说明JSON是原生的,否则不是;


    作者:yinxmm
    链接:https://www.jianshu.com/p/4c92eb5eb361
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    进制
    流程控制
    运算符
    格式化输出
    数据结构-树的遍历
    A1004 Counting Leaves (30分)
    A1106 Lowest Price in Supply Chain (25分)
    A1094 The Largest Generation (25分)
    A1090 Highest Price in Supply Chain (25分)
    A1079 Total Sales of Supply Chain (25分)
  • 原文地址:https://www.cnblogs.com/aslxwjh/p/10292946.html
Copyright © 2011-2022 走看看