數據類型檢測的方式有哪些?
(1)typeof
其中數組、對象、null 都會被判斷為 object,其他判斷都正確。
(2)instanceof
instanceof
可以正確判斷對象的類型,其內部運行機制是判斷在其原型鏈中能否找到該類型的原型。
instanceof
只能正確判斷引用數據類型,而不能判斷基本數據類型。instanceof
運算符可以用來測試一個對象在其原型鏈中是否存在一個構造函數的 prototype
有兩個作用,一是判斷數據的類型,二是對象實例通過 constrcutor
對象訪問它的構造函數。需要注意,如果創(chuàng)建一個對象來改變它的原型,constructor
(4)Object.prototype.toString.call()
Object.prototype.toString.call()
使用 Object 對象的原型方法 toString 來判斷數據類型:
同樣是檢測對象 obj 調用 toString 方法,obj.toString()的結果和Object.prototype.toString.call(obj)的結果不一樣,這是為什么?
這是因為 toString 是 Object 的原型方法,而 Array、function 等類型作為 Object 的實例,都重寫了 toString 方法