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

