Object.prototype.toString.call()方法浅谈

(http://www.cnblogs.com/wyaocn/p/5796142.html)
使用Object.prototype上的原生toString()方法判断数据类型,使用方法如下:
Object.prototype.toString.call(value)
1.判断基本类型:

Object.prototype.toString.call(null);//”[object Null]”
Object.prototype.toString.call(undefined);//”[object Undefined]”
Object.prototype.toString.call(“abc”);//”[object String]”
Object.prototype.toString.call(123);//”[object Number]”
Object.prototype.toString.call(true);//”[object Boolean]”

2.判断原生引用类型:

  • 函数类型

    Function fn(){console.log(“test”);}Object.prototype.toString.call(fn);//”[object Function]”
    
  • 日期类型

    var date = new Date();Object.prototype.toString.call(date);//”[object Date]”
    
  • 数组类型

      var arr = [1,2,3];Object.prototype.toString.call(arr);//”[object Array]”
    
  • 正则表达式

      var reg = /[hbc]at/gi;Object.prototype.toString.call(arr);//”[object Array]”
    
  • 自定义类型

      function Person(name, age) { this.name = name; this.age = age;}var person = new Person("Rose", 18);Object.prototype.toString.call(arr); //”[object Object]”
    

    很明显这种方法不能准确判断person是Person类的实例,而只能用instanceof 操作符来进行判断,如下所示:
    console.log(person instanceof Person);//输出结果为true

3.判断原生JSON对象:

var isNativeJSON = window.JSON && Object.prototype.toString.call(JSON);console.log(isNativeJSON);//输出结果为”[object JSON]”说明JSON是原生的,否则不是;

注意:Object.prototype.toString()本身是允许被修改的,而我们目前所讨论的关于Object.prototype.toString()这个方法的应用都是假设toString()方法未被修改为前提的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • toStirng()与Object.prototype.toString.call()方法浅谈 一、toStrin...
    Michael_林阅读 1,061评论 1 4
  • JS基础讲解 JavaScript组成ECMAScript:解释器、翻译DOM:Document Object M...
    FConfidence阅读 580评论 0 1
  • title: js面向对象date: 2017年8月17日 18:58:05updated: 2017年8月27日...
    lu900618阅读 580评论 0 2
  • @转自GitHub 介绍js的基本数据类型。Undefined、Null、Boolean、Number、Strin...
    YT_Zou阅读 1,184评论 0 0
  • 昨天,我和我妈通电话,听说你要结婚了,一下子让我想了很多,关于你,关于很久的那些以前。 在我单薄的生命里,几乎每...
    游吟Lee阅读 340评论 0 1