在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种。对于数组、函数、对象来说,其关系错综复杂,使用 typeof 都会统一返回 “object” 字符串。
所以:要想区别对象、数组、函数单纯使用 typeof 是不行的。
[b] Object.prototype.toString.call() [/b]
ECMA 5.1 中关于该方法的描述是这样的:
When the toString method is called, the following steps are taken:
If the this value is undefined, return “[object Undefined]“.
If the this value is null, return “[object Null]“.
Let O be the result of calling ToObject passing the this value as the argument.
Let class be the value of the [[Class]] internal property of O.
Return the String value that is the result of concatenating the three Strings “[object ", class, and "]“.
ECMAScript 5 中,为了方便,对 null 和 undefined 调用 Object.prototype.toString 方法, 其返回值由 Object 变成了 Null 和 Undefined。方法结果如下:
Object.prototype.toString.call(123);//[object Number]
Object.prototype.toString.call('123'); //[object String]
Object.prototype.toString.call(undefined);//[object Undefined]
Object.prototype.toString.call(null);//[object Null]
Object.prototype.toString.call(true);//[object Boolean]
Object.prototype.toString.call({});//[object Object]
Object.prototype.toString.call([]); //[object Array]
Object.prototype.toString.call(function(){}); //[object Function]
分享到:
相关推荐
在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. var arr = []; console.log(Object.prototype.toString.call(arr)) //[object Array] 本文要讲的就是,...
为什么要用Object.prototype.toString而不是Function.prototype.toString或者其它?这是和他们的toString解释方式有关系的。下面是ECMA中对Object.prototype.toString的解释: 代码如下: Object.prototype.toString...
console.log(Object.prototype.toString.call(obj) === "[object Object]"); 使用以上方式可以很好的区分各种类型: (无法区分自定义对象类型,自定义类型可以采用instanceof区分) console.log(Object.prototype....
在JavaScript中,`Object.prototype.toString`是一个非常重要的内置方法,它返回一个表示该对象的字符串...在实际开发中,合理利用`toString`,可以提高代码的可读性和可维护性,尤其在处理复杂数据结构和类型判断时。
本篇文章将深入探讨两种常见的数据类型检测方法:`typeof`和`Object.prototype.toString.call()`。 首先,我们来看`typeof`操作符。`typeof`是JavaScript内置的全局函数,用于返回一个表达式或变量的数据类型,...
总结来说,JavaScript中的类型检测涉及多种方法,包括`typeof`、`instanceof`、`Object.prototype.toString.call()`、`Array.isArray()`和自定义函数。根据实际需求选择合适的方法,可以确保代码的准确性和健壮性。...
`typeof`用于基本数据类型的判断,但它无法进一步区分所有对象的子类型,比如无法区分`null`和`object`类型,因为`typeof null`也会返回`"object"`。而`instanceof`可以用来判断一个对象是否为某个构造函数的实例,...
它通过比较`Object.prototype.toString.call(obj)`的结果与`'[object Object]'`来判断。 7. `isArray` 函数确定一个值是否为数组。在旧版本的JavaScript中,它可能需要被挂载到Array对象上,以支持老版本浏览器。`...
这个方法首先处理 `null` 的特殊情况,然后使用 `Object.prototype.toString.call()` 获取类型字符串并修剪两端的 `[object` 和 `]`,最后将结果转换为小写。这样,我们就可以对任何值进行类型检查,如 `typeOf([]) ...
在JavaScript中,一切皆为对象,包括基本数据类型,它们都有对应的包装对象。本文将深入探讨Object对象的使用和相关方法。 首先,Object对象可以用于创建新的对象实例。通过`new Object()`或直接使用大括号`{}`语法...
在上面的例子中,我们使用 Object.prototype.toString.call(arr) 来检测数组的类型。该方法返回 `[object Array]`,表明该对象是一个数组。 返回该数字对应进制的字符串 toString 方法的第三个作用是返回该数字...
JS中判断数据类型的4种方法及其实例:typeof、instanceof、constructor、Object.prototype.toString.call();还有判断数据类型的函数
但是,通过`Object.prototype.toString.call(obj)`,我们可以确保调用的是最原始的`toString`方法,位于`Object.prototype`上,这个方法没有被任何其他类型重写,因此它会返回一个表示`obj`真实类型的字符串,如`"...
总结起来,JavaScript提供了多种方式来判断数据类型,包括 `typeof`、`instanceof`、`constructor` 和 `Object.prototype.toString.call()`。理解这些工具的工作原理对于编写健壮的JavaScript代码至关重要,特别是在...
复杂数据类型 7.Object 类型检测 typeof /s/ // chrome1-12 return function Object.prototype.toString.call(RegExp) 对象自身属性检测 {}.hasOwnProperty(prop) Object.prototype.hasOwnProperty.call(o, prop...
记录一些学习中遇到的问题,如果理解的有什么错误希望大佬们能帮我指正。 一、为什么有这个问题? 在学习他人写的js教程时,了解到获取一个值的数据类型时,使用type ...console.log(Object.prototype.toString.call(te