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

  • 相关阅读:
    路由器欺骗(原始套接字五)
    ICMP拒绝服务攻击(原始套接字系列四)
    ping的实现(原始套接字系列三)
    原始套接字基础(原始套接字系列二)
    原始套接字简介(原始套接字系列一)
    MMS服务学习
    转 Qt 翻译
    为应用程序设置一个图标 (窗口左上角 程序图标)
    正则表达式
    《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议
  • 原文地址:https://www.cnblogs.com/ndh074512/p/14774882.html
Copyright © 2011-2022 走看看