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

    //判断是否为函数
    function isFunction(it) {
      return Object.prototype.toString.call(it) === '[object Function]';
    }
    
    //判断是否为数组
    function isArray(it) {
      return Object.prototype.toString.call(it) === '[object Array]';
    }
    
    //判断各种类型的基函数
    function isType(type) {
      return function(obj) {
        return Object.prototype.toString.call(obj) === "[object " + type + "]";
      }
    }
    //借助以下四个方法来判断: 比如 isObject({a:1, b:2})
    var isObject = isType("Object");
    var isString = isType("String");
    var isArray = Array.isArray || isType("Array");
    var isFunction = isType("Function");

    ECMAScript 3:

    在Object.prototype.toString方法被调用时,会执行以下的操作步骤:

    1. 获取this对象的[[Class]]属性的值;

    2.  计算出"[object ", 第1步的操作结果Result(1),以及 "]"连接后的新字符串.

    3.  返回第2步的操作结果Result(2).

    ECMAScript 5:

    在Object.prototype.toString方法被调用时,会执行以下的操作步骤:

    1. 如果this的值为undefined,返回"[object Undefined]".

    2. 如果this的值为null,返回"[object Null]".

    3. O成为调用ToObject(this)的结果.

    4. class成为O的内部属性[[Class]]的值.

    5. 返回"[object ",class, 以及 "]"连接后的新字符串.

    兼容性:

      为了兼容ie6这类比较古老的游览器,Object.prototype.toString.call(obj) 通常用作"Boolean Number String Function Array Date RegExp Object"这8种数据类型的判断。

      null 和 undefined 建议不要用Object.prototype.toString.call(obj)来判断。

  • 相关阅读:
    SpringCloud(一)概念及设计
    SpringBoot2(十三)HttpMessageConverter
    SpringBoot2(十二)当Shiro遇上RedisCache
    SpringBoot2(十一)集成RedisCache
    UDP协议解析 以及和TCP协议的区别
    TCP协议解析及相关问题
    mybatis缓存机制
    MYSQL数据库类型与JAVA类型对应表
    Java HashMap问题
    Java数据库事务四大特性以及隔离级别
  • 原文地址:https://www.cnblogs.com/langtao/p/2961521.html
Copyright © 2011-2022 走看看