美文网首页js css html
Object.prototype.toString.call()

Object.prototype.toString.call()

作者: 扶得一人醉如苏沐晨 | 来源:发表于2022-09-19 09:17 被阅读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 + "]" 形式的字符串。

     应用判断数据类型

    相关文章

      网友评论

        本文标题:Object.prototype.toString.call()

        本文链接:https://www.haomeiwen.com/subject/pukeortx.html