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)来判断。

  • 相关阅读:
    心境的改变
    php之empty()函数常识性的错误
    php原生之实现图片,文件的下载
    多说,我还欠你一个会员
    开发模块化的初步理解
    Gradle模块化项目中使用了非模块化库的编译方法
    系统架构一一前端技术
    系统架构一一ORM的应用
    系统架构——依赖注入
    WPF下的RibbonApplicationMenu控件自定义
  • 原文地址:https://www.cnblogs.com/langtao/p/2961521.html
Copyright © 2011-2022 走看看