1. 程式人生 > >判斷數據類型instance of type of object.prototype.tostring 區別

判斷數據類型instance of type of object.prototype.tostring 區別

typeof 優先級 操作 str all sta bject 數值 事情

typeof

typeof 是一個操作符,其右側跟一個一元表達式,並返回這個表達式的數據類型。 返回的結果用該類型的字符串(全小寫字母)形式表示,包括以下 6 種: number、boolean、string、object、undefined、symbal 、function。 typeof 對於對象,除了函數都會顯示 object 對於 null 來說,雖然它是基本類型,但是會顯示 object,這是一個存在很久了的 Bug

instance of

instanceof 是用來判斷 A 是否為 B 的實例, 表達式為:A instanceof B, 例:arr instanceof Array
如果 A 是 B 的實例,則返回 true,否則返回 false。 在這裏需要特別註意的是:instanceof 檢測的是原型。

Object.prototype.toString.call

toString 是 Object 原型對象上的方法, 使用 call 來調用該方法會返回調用者的類型字符串,格式為 [object,xxx],xxx 是調用者的數據類型, 包括:String、Number、Boolean、Undefined、Null、Function、Date、Array、RegExp、Error、HTMLDocument 等, 基本上,所有的數據類型都可以通過這個方法獲取到。
Object.prototype.toString()返回[object class], 我們可以通過它獲取對象的類型信息 eg:[object Array] toString() 獲取某個類型的數據的類型 valueof() 獲取某個類型的數據的值 ES6 Symbol.toPrimitive Symbol.toPrimitive被調用時,會接受一個字符串參數,表示當前運算的模式,一個有三種模式。 該方法在轉基本類型時調用優先級最高
  • Number:該場合需要轉成數值
  • String:該場合需要轉成字符串
  • Default:該場合可以轉成數值,也可以轉成字符串。

比較運算符

  1. 如果是對象,就通過 toPrimitive 轉換對象
  2. 如果是字符串,就通過 unicode 字符索引來比較

new

  1. 新生成了一個對象
  2. 鏈接到原型
  3. 綁定 this
  4. 返回新對象

在調用 new 的過程中會發生以上四件事情,我們也可以試著來自己實現一個 new

判斷數據類型instance of type of object.prototype.tostring 區別