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])的行為,那么你可以使用該函數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM