通过Object.prototype.toString.call()--判断数据(基本、引用)类型

本文介绍了JavaScript中使用typeof和Object.prototype.toString方法进行数据类型检测的方法。typeof可以检测基本数据类型,而Object.prototype.toString则能更准确地判断对象的具体类型,如数组、函数等。

typeof只能检测基本数据类型,不能检测对象数据类型;

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

var arr = [];
alert(Object.prototype.toString.call(arr))  //返回值:[object Array]
var obj = {};
alert(Object.prototype.toString.call(obj)) //返回值:[object Object]
var a = 123;
alert(Object.prototype.toString.call(a)) //返回值:[object Number]


`Object.prototype.call.toString` 并不是一个常见或正确的表达,你想问的可能是 `Object.prototype.toString.call` 。 ### 作用 `Object.prototype.toString.call` 的主要作用是准确判断数据类型。在 JavaScript 中,不同的数据类型可以使用不同的方式进行判断,但 `Object.prototype.toString.call` 可以提供一种更通用、准确的方法,不受对象自身 `toString` 方法重写的影响,并且能区分一些特殊类型,如 `null` 和 `undefined` 等 [^1][^2]。 ### 用法 通过 `Object.prototype.toString.call` 方法调用时,需要传入一个参数,这个参数就是要判断类型的值。以下是不同类型的使用示例: ```javascript console.log(Object.prototype.toString.call([])); // "[object Array]" console.log(Object.prototype.toString.call({})); // "[object Object]" console.log(Object.prototype.toString.call("")); // "[object String]" console.log(Object.prototype.toString.call(null)); // "[object Null]" console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]" console.log(Object.prototype.toString.call(0)); // "[object Number]" console.log(Object.prototype.toString.call(true)); // "[object Boolean]" ``` ### 返回值 返回值是一个字符串,格式为 `[object 对象构造函数名]` 。其中,`对象构造函数名` 表示传入参数的具体类型,比如传入数组,返回 `[object Array]` ;传入对象,返回 `[object Object]` 等 [^2]。 需要注意的是,`Object.prototype.toString()` 本身是允许被修改的,而上述关于 `Object.prototype.toString()` 这个方法的应用都是假设 `toString()` 方法未被修改为前提的 [^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值