Object.prototype.toString()方法返回一個表明該對象的字符串。函數
var o = new Object(); o.toString(); //"[object Object]"
使用toString()方法來檢測對象類型spa
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] // Since JavaScript ES5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null]
封裝爲classof()函數prototype
function classof(o){ if(o === null) return "Null"; if(o === undefined) return "Undefined"; //Object.prototype.toString()返回"[object Object]",而後call(o)參數,返回該類型,如number類型call(1),返回"[object Number]",再使用slice(截取類型部分) return Object.prototype.toString.call(o).slice(8,-1); } console.log(classof(null)); //"Null" console.log(classof(undefined)); //"Undefined" console.log(classof(1)); //"Number" console.log(classof("")); //"String" console.log(classof(true)); //"Boolean" console.log(classof({})); //"Object" console.log(classof([])); //"Array" console.log(classof(new Date())); //"Date" console.log(classof(/./)); //"RegExp" console.log(window); //window(這是客戶端宿主對象) console.log(classof(function f(){})); //定義一個自定義構造函數