typeof(根據二進位制判斷):
常用於判斷基礎資料型別,對於引用資料型別除了function 返回 ‘function’,其餘都返回 ‘object’ (typeof null === object)
instanceof:
主要用於區分引用資料型別,檢測建構函式的 prototype 屬性是否出現在某個例項物件的 原型鏈 上
語法:object(某個例項物件) instenceof constructor(建構函式)
不適用於簡單資料型別的檢測,檢測過程繁瑣且無法檢測簡單資料型別中的 undefined、null、symbol
Object.prototype.toString.call():
適用於所有的型別檢測,且檢測精準
語法:Object.prototype.toString.call(資料) ;返回的是該資料型別的字串。
原理:Object.prototype.toString 表示一個返回物件型別的字串,call() 方法可以改變this的指向,把Object.prototype.toString方法指向不同的資料型別上, 返回不同的結果
constructor(用於引用資料型別):
用於檢測引用資料型別,檢測方法是獲取例項的建構函式,判斷和某個類是否相同,如果相同就說明該資料是符合那個資料型別的
這種方法不會把原型鏈上的其他類也加入進來,避免了原型鏈的干擾
引用:https://www.nowcoder.com/exam/interview/detail?questionClassifyId=0&questionId=2412354&questionJobId=156&type=1