JavaScript Object.prototype.toString用法

在这里插入图片描述

Object.prototype.toString.call(value)

在 JavaScript 里使用 typeof
判断数据类型,只能区分基本类型,即:number、string、undefined、boolean、object。

对于null、array、function、object来说,使用 typeof 都会统一返回 object 字符串。

要想区分对象、数组、函数、单纯使用 typeof 是不行的。在 JavaScript
中,可以通过Object.prototype.toString 方法,判断某个对象之属于哪种内置类型。

分为null、string、boolean、number、undefined、array、function、object、date、math。

1.、判断基本类型

输出的值是字符串,并且用中括号括起来,左边是 object(小写),右边是类型(首字母大写)

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 = new RegExp();
Object.prototype.toString.call(reg);//”[object RegExp]”
自定义类型
function Person(name, age) {
    this.name = name;
    this.age = age;
}
var person = new Person("Rose", 18);
Object.prototype.toString.call(person); //”[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()方法未被修改为前提的。
发布了161 篇原创文章 · 获赞 71 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_44034384/article/details/99249887
今日推荐