//得到x的類型,返回類型名稱 function getType(x) { //如果x為null,則返回null if (x == null) return "null"; var t = typeof x; //如果x為簡單類型,則返回類型名稱 if (t.toLocaleLowerCase() != "object") return t; //調用object類的toString方法得到類型信息 //object.toString方法返回類似這樣的信息[object 類名] t = Object.prototype.toString.apply(x).toLowerCase(); //截取toString方法返回值的類名部分 t = t.substring(8, t.length - 1); if (t.toLocaleLowerCase() != "object") return t; //檢查x確實為object類型 if (x.constructor == Object) return t; //從構造函數得到類型名稱 if (typeof x.constructor == "function") return getFunctionName(x.constructor); return "unknow type"; } //得到函數名稱 function getFunctionName(fn) { if (typeof fn != "function") throw "the argument must be a function."; var reg = //W*function/s+([/w/$]+)/s*/(/; var name = reg.exec(fn); if (!name) { return '(Anonymous)'; } return name[1]; }