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

  • 相关阅读:
    1051 Wooden Sticks(贪心-3)
    97 等价交换(贪心-2)
    python文件操作
    python学习-day 2
    python学习-day 1
    Python 测试题目-1
    Python list和dict方法
    Python 字符串
    while循环语句
    Python if判断语句
  • 原文地址:https://www.cnblogs.com/ndh074512/p/14774882.html
Copyright © 2011-2022 走看看