Object.prototype.toString.call(obj)检测数据类型

typeof bar==‘object‘ 不能确切判断数据是一个‘纯粹’的对象 Array null的结果都是object

比较好的方法是:

Object.prototype.toString.call(bar)==‘[object Object]‘;

使用以上方法可以很好的区分各种类型:

console.log(Object.prototype.toString.call(""));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({}));//[object Object]
console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date()));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
function Person(){};
console.log(Object.prototype.toString.call(new Person));//[object Object]

toString()方法返回这个的对象的字符串

为什么不用obj.toString(),obj.toString()的结果与object.prototype.toString.call(obj);的结果不一样,为什么呢?

这是因为toString为Object的原型方法,而Array funciton等类型作为Object的实例,都重写了toString方法。不同的对象类型调用toString方法时,调用的是重写后的toStirng方法。

可以验证一下:

let arr=[2,3,4];
console.log(Array.prototype.toString.call(arr));//‘[object,Array]‘
console.log(Array.prototype.hasOwnProperty(‘toString‘));//true  console.log(arr.toString());//2,3,4 delete Array.prototype.toString console.log(arr.toString());//‘[object,Array]‘

删除了Array的toString方法后,同样再采用arr.toString()方法调用时,不再有屏蔽Object源性方法的实例方法,因此沿着原型链,arr调用了Object的toString方法,返回了和Array.prototype.toString.call(arr);相同的结果。

参考:https://www.cnblogs.com/youhong/p/6209054.html

原文地址:https://www.cnblogs.com/xiaofenguo/p/10566065.html

时间: 2024-10-11 20:31:14

Object.prototype.toString.call(obj)检测数据类型的相关文章

利用Object.prototype.toString.call(obj)判断数据类型

1.typeof判断数据类型 typeof可以用来判断基本数据类型,对于Array.Error.RegExp.Number.Function只能判断为object 2.使用Object.prototype.toString.call(obj)判断数据类型 var a=new Number(12); var toString=Object.prototype.toString; console.log(toString.call(a));//[object Number] console.log(

用Object.prototype.toString.call(obj)检测对象类型原因分析

用Object.prototype.toString.call(obj)检测对象类型原因分析 更新时间:2018年10月11日 08:46:33   投稿:laozhang    我要评论 在本篇文章里我们给大家剖析了用Object.prototype.toString.call(obj)检测对象类型的原因,需要的朋友们可以学习下. 这是一个十分常见的问题,用 typeof 是否能准确判断一个对象变量,答案是否定的,null 的结果也是 object,Array 的结果也是 object,有时候

为什么用Object.prototype.toString.call(obj)检测对象类型?

console.log(Object.prototype.toString.call("jerry"));//[object String]console.log(Object.prototype.toString.call(12));//[object Number]console.log(Object.prototype.toString.call(true));//[object Boolean]console.log(Object.prototype.toString.call

数据类型的判断 --Object.prototype.toString.call(obj)精准检测对象类型

数据类型的判断 typeof typeof返回一个表示数据类型的字符串,返回结果包括:number.boolean.string.symbol.object.undefined.function等7种数据类型,但不能判断null.array等 typeof Symbol(); // symbol 有效 typeof ''; // string 有效 typeof 1; // number 有效 typeof true; //boolean 有效 typeof undefined; //undef

JavaScript类型判断详解(Object.prototype.toString.call()方法进行数据类型的可靠判断)

前言 在编写一些类库中,我们经常需要判断一些未知的用户的输入和配置,故而需要进行一系列的类型判断.故而总结下JS是如何进行类型判断的 typeof typeof操作符返回一个字符串,表示未经计算的操作数的类型:该运算符数据类型(返回字符串,对应列表如图) typeof undefined = undefined typeof Null = object typeof Boolean = boolean typeof Number = number typeof String = string t

从toString()方法到Object.prototype.toString.call()方法

一.toString方法和Object.prototype.toSting.call()的区别 var arr=[1,2]; 直接对一个数组调用toString()方法, console.log(arr.toString());    //输出1,2 现在通过call方法指定arr数组为Object.prototype对象中的toString方法的上下文. console.log(Object.prototype.toString.call(arr));    //输出[Object Array

instanceof, typeof, & Object.prototype.toString

/** * * @authors Your Name ([email protected]) * @date 2016-11-18 09:31:23 * @version $Id$ */instanceof: 1.左操作数是一个对象,右操作数是标识对象的类,如果左侧的对象是右侧类的实例,则表达式返回true,否则返回false 2.如果左边的操作数不是对象,返回false 3.如果右边的操作数不是函数,抛出类型错误异常 4.在计算obj instanceof f 时, 会先计算f.prototy

类型判断----小白讲解typeof,instanceof,Object.prototype.toString.call()

1.typeof只能判断基本类型数据, 例子: typeof 1 // "number" typeof '1' // "string" typeof true // "boolean" typeof {} // "object" typeof [] // "object" typeof function(){} // "function" typeof undefined // &quo

【JavaScript】Object.prototype.toString.call()进行类型判断

权声明:本文为博主原创文章,未经博主允许不得转载. [javascript] view plain copy print? op = Object.prototype, ostring = op.toString, ... function isFunction(it) { return ostring.call(it) === '[object Function]'; } function isArray(it) { return ostring.call(it) === '[object A