javascript 得到變量類型的函數(shù)
更新時間:2010年05月19日 19:07:56 作者:
在JavaScript中,有時需要準(zhǔn)確知道一個變量的類型,顯然typeof函數(shù)不能滿足這個要求,這個函數(shù)在大多數(shù)情況下都返回object。
這個功能需要寫一點代碼來實現(xiàn)。下面的函數(shù)可以得到一個變量的類型,調(diào)用時傳遞一個變量進去,會返回用字符串形式描述的變量類型。
//得到x的類型,返回類型名稱
function getType(x) {
//如果x為null,則返回null
if (x == null) return "null";
var t = typeof x;
//如果x為簡單類型,則返回類型名稱
if (t.toLocaleLowerCase() != "object") return t;
//調(diào)用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;
//從構(gòu)造函數(shù)得到類型名稱
if (typeof x.constructor == "function")
return getFunctionName(x.constructor);
return "unknow type";
}
//得到函數(shù)名稱
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];
}
復(fù)制代碼 代碼如下:
//得到x的類型,返回類型名稱
function getType(x) {
//如果x為null,則返回null
if (x == null) return "null";
var t = typeof x;
//如果x為簡單類型,則返回類型名稱
if (t.toLocaleLowerCase() != "object") return t;
//調(diào)用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;
//從構(gòu)造函數(shù)得到類型名稱
if (typeof x.constructor == "function")
return getFunctionName(x.constructor);
return "unknow type";
}
//得到函數(shù)名稱
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];
}
相關(guān)文章
JavaScript中操作Mysql數(shù)據(jù)庫實例
這篇文章主要介紹了JavaScript中操作Mysql數(shù)據(jù)庫實例,本文直接給出實現(xiàn)代碼,代碼中包含詳細(xì)注釋,需要的朋友可以參考下2015-04-04
js使用for循環(huán)及if語句判斷多個一樣的name
這篇文章主要介紹了js使用for循環(huán)機if語句判斷多個一樣的name,此法比較實用,需要的朋友可以參考下2014-09-09
ant-design-pro?的EditableProTable表格驗證調(diào)用的實現(xiàn)代碼
這篇文章主要介紹了ant-design-pro?的EditableProTable表格驗證調(diào)用,這里的需求是點擊外部的保存要對整個表單進行驗證,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06
js遍歷對象數(shù)組并獲取對象相應(yīng)的屬性值實例代碼
對于數(shù)組或者對象的遍歷,篩選,提取等操作是前端開發(fā)中經(jīng)常有的需求,下面這篇文章主要給大家介紹了關(guān)于js遍歷對象數(shù)組并獲取對象相應(yīng)的屬性值的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
微信小程序列表渲染功能之列表下拉刷新及上拉加載的實現(xiàn)方法分析
這篇文章主要介紹了微信小程序列表渲染功能之列表下拉刷新及上拉加載的實現(xiàn)方法,結(jié)合實例形式分析了微信小程序列表下拉刷新及上拉加載的相關(guān)實現(xiàn)方法與技巧操作,需要的朋友可以參考下2017-11-11
原生js實現(xiàn)跨瀏覽器獲取鼠標(biāo)按鍵的值
e.button W3C是獲取鼠標(biāo)按鍵 0 表示左鍵 1表示中鍵 2表示右鍵 而IE瀏覽器則是 1表示左鍵 4表示中間 2表示右鍵 這里的IE瀏覽器主要是IE8以下的瀏覽器,感興趣的朋友可以參考下哈2013-04-04

