zoukankan      html  css  js  c++  java
  • Object.prototype.toString.call()方法 来进行类型判断

    Object.prototype.toString() 的调用

    对于 Object.prototype.toString() 方法,会返回一个形如 "[object XXX]" 的字符串。

    如果对象的 toString() 方法未被重写,就会返回如上面形式的字符串。

    ({}).toString();     // => "[object Object]"
    Math.toString();     // => "[object Math]"
    

    但是,大多数对象,toString() 方法都是重写了的,这时,需要用 call() 方法来调用

    任何对象object都可以通过this绑定调用Object.prototype.toString()方法吗?答案是可以,结果如下

    Object.prototype.toString.call({});
    <!--"[object Object]"-->
    Object.prototype.toString.call([]);
    <!--"[object Array]"-->
    Object.prototype.toString.call(function(){});
    <!--"[object Function]"-->
    Object.prototype.toString.call('');
    <!--"[object String]"-->
    Object.prototype.toString.call(1);
    <!--"[object Number]"-->
    Object.prototype.toString.call(true);
    <!--"[object Boolean]"-->
    Object.prototype.toString.call(null);
    <!--"[object Null]"-->
    Object.prototype.toString.call(undefined);
    <!--"[object Undefined]"-->
    Object.prototype.toString.call();
    <!--"[object Undefined]"-->
    Object.prototype.toString.call(new Date());
    <!--"[object Date]"-->
    Object.prototype.toString.call(/at/);
    <!--"[object RegExp]"-->

    从上述代码可以看到,因为Object是所有子类的父类,所以任何类型的对象object都可以通过this绑定调用Object.prototype.toString()方法,返回该对象的字符串表示!

    通过Object.prototype.toString.call(obj),输出的是[object xxx]字符串,可以利用这一特点进行类型的精确判断,这里的call的作用就是将toString()内部的this指向obj

  • 相关阅读:
    Mysql语句
    数据库的介绍以及安装
    数据库的基本操作
    进程
    并发编程
    友链
    C/C++第十一届蓝桥杯省赛B组第二场比赛
    数据结构之【栈】+十进制转d进制(堆栈数组模拟)
    sort函数的用法与实验
    memset的实验
  • 原文地址:https://www.cnblogs.com/ndh074512/p/14774882.html
Copyright © 2011-2022 走看看