zoukankan      html  css  js  c++  java
  • Object.prototype.toString.call

    我们都知道Object.prototype.toString.call可以用来判断变量的类型,在这之前我们可以使用typeof来简单的判断

    typeof '123' // string
    typeof 123 // number
    typeof undefined // undefined
    typeof true // boolean
    

      

    但是typeof也有一点局限性,typeof判断数据类型,只能区分基本类型对于null、array、function、object来说,使用typeof都会统一返回object字符串。

     

    这个时候可以通过Object.prototype.toString方法,判断某个对象之属于哪种内置类型。

    Object.prototype.toString.call(null); // "[object Null]"
    Object.prototype.toString.call(undefined); // "[object Undefined]"
    Object.prototype.toString.call(“abc”);// "[object String]"
    Object.prototype.toString.call(123);// "[object Number]"
    Object.prototype.toString.call(true);// "[object Boolean]"
    

      

    在js中每个内置类型都有自己的toString方法。对于一个数组,它将返回所有用逗号连接的数组值

    比如数组

    const arr = [1,2,3,4,5]
    arr.toString() // returns "1,2,3,4,5"
    

      

    它是通过Array.prototype.toString继承而来

    const arr = [1,2,3,4,5]
    Array.prototype.toString.call(arr) // returns "1,2,3,4,5"
    

      

    Object的toString函数(对象的内置类型)正好返回对象的类型,格式为[Object type]的字符串。举个例子

    const arr = [1,2,3,4,5]
    Object.prototype.toString.call(arr) // returns "[object Array]"
    
    const str = 'test'
    str.toString() // returns 'test'
    Object.prototype.toString.call(str) // returns "[object String]"
    

      

    由于每个类型都有自己的toString方法,根据原型链的原理这个方法没法找到Object.prototype.toString就会已经找到。

     

    如果你想知道它是否是一个数组,这是一种方法。toString方法驻留在Object的原型中。Call是一个允许您更改另一个函数上下文的函数。当您调用[].toString()时,它运行的是Array.prototype上toString方法。如果你想要object.prototype. tostring(即[object Type])的行为,那么你可以使用该函数。

  • 相关阅读:
    跳出语句 break continue
    循环语句 for循环、while循环、do while循环
    选择语句
    判断语句
    方法入门
    ++运算与--运算
    js面向对象的几种方式----工厂模式、构造函数模式、原型模式
    JavaScript This 的六道坎
    前端必备,十大热门的 JavaScript 框架和库
    localStorage、sessionStorage详解,以及storage事件使用
  • 原文地址:https://www.cnblogs.com/smallpen/p/15642752.html
Copyright © 2011-2022 走看看