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

  • 相关阅读:
    mac xcode c++ cin cout注意细节一
    linux c++编译问题和虚拟机网络通信
    cocos2d之列表容器节点再排序
    cocos2d之z轴位置示例
    cocos2d之json使用实例
    绑定方法与非绑定方法
    Python 多态与抽象类
    面向对象
    面向对象之继承与派生
    面向对象之类与对象
  • 原文地址:https://www.cnblogs.com/ndh074512/p/14774882.html
Copyright © 2011-2022 走看看