js css html

Object.prototype.toString.call()

2022-09-19  本文已影响0人  扶得一人醉如苏沐晨

一、Object.prototype.toString() 的调用

对于 Object.prototype.toString() 方法,会返回一个形如 "[object XXX]" 的字符串。

如果对象的 toString() 方法未被重写,就会返回如上面形式的字符串。

({}).toString();// => "[object Object]"Math.toString();// => "[object Math]"

但是,大多数对象,toString() 方法都是重写了的,这时,需要用 call() 或 Reflect.apply() 等方法来调用。

Object.prototype.toString.call(x);// => "[object Object]"

二、Object.prototype.toString() 的原理

对于 Object.prototype.toString.call(arg),若参数为 null 或 undefined,直接返回结果。

Object.prototype.toString.call(null);// => "[object Null]"

Object.prototype.toString.call(undefined);// => "[object Undefined]"

若参数不为 null 或 undefined,则将参数转为对象,再作判断。对于原始类型,转为对象的方法即装箱,此处不赘述。

转为对象后,取得该对象的 [Symbol.toStringTag] 属性值(可能会遍历原型链)作为 tag,如无该属性,或该属性值不为字符串类型,则依下表取得 tag, 然后返回 "[object " + tag + "]" 形式的字符串。

 应用判断数据类型

上一篇下一篇

猜你喜欢

热点阅读