1. typeof
typeof 操作符返回變量或表達式的類型。
語法: typeof arr;
這種數據類型檢測只對簡單數據類型適用,對數組和對象不實用.
2. instanceof
instanceof運算符用來判斷一個構造函數的prototype屬性所指向的對象是否存在另外一個要檢測對象的原型鏈上
語法: obj instanceof Object;
這種方式對檢測對象的實例比較好用,但是還是區分不了數組和對象.
3. constructor
constructor 屬性返回對創建此對象的數組函數的引用。
語法: object.constructor
'str'.constructor === String
4. Object.prototype.toString.apply()或者Object.prototype.toString.call()
使用toString() 方法返回一個表示該對象的字符串,每個對象都有一個 toString()
方法,toString()
方法被每個 Object
對象繼承。爲了每個對象都能通過 Object.prototype.toString()
來檢測,需要以 Function.prototype.call()
或者 Function.prototype.apply()
的形式來調用,傳遞要檢查的對象作爲第一個參數,稱爲 thisArg
。
語法: Object.prototype.toString.apply(thisArg)
或者 Object.prototype.toString.call(var)
let arr = [];
Object.prototype.toString.apply(arr); // "[object Array]"
Object.prototype.toString.call(arr); // "[object Array]"