Object.prototype.toString 方法的擴展與應用

出處

Object 對象 - JavaScript 教程 - 網道 ---- tostring-的應用:判斷數據類型

代碼

  • 不同數據類型的 Object.prototype.toString 方法返回值如下
    • 數值:返回[object Number]宅荤。
    • 字符串:返回[object String]弧烤。
    • 布爾值:返回[object Boolean]璃搜。
    • undefined:返回[object Undefined]
    • null:返回[object Null]食拜。
    • 數組:返回[object Array]
    • arguments 對象:返回[object Arguments]眯杏。
    • 函數:返回[object Function]匾乓。
    • Error 對象:返回[object Error]
    • Date 對象:返回[object Date]鳄厌。
    • RegExp 對象:返回[object RegExp]荞胡。
    • 其他對象:返回[object Object]
Object.prototype.toString.call(2) // "[object Number]"
Object.prototype.toString.call('') // "[object String]"
Object.prototype.toString.call(true) // "[object Boolean]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(Math) // "[object Math]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call([]) // "[object Array]"
  • 利用這個特性了嚎,可以寫出一個比typeof運算符更準確的類型判斷函數泪漂。
var type = function (o){
  var s = Object.prototype.toString.call(o);
  return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};

type({}); // "object"
type([]); // "array"
type(5); // "number"
type(null); // "null"
type(); // "undefined"
type(/abcd/); // "regex"
type(new Date()); // "date"
  • 在上面這個type函數的基礎上,還可以加上專門判斷某種類型數據的方法歪泳。
var type = function (o){
  var s = Object.prototype.toString.call(o);
  return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};

['Null',
 'Undefined',
 'Object',
 'Array',
 'String',
 'Number',
 'Boolean',
 'Function',
 'RegExp'
].forEach(function (t) {
  type['is' + t] = function (o) {
    return type(o) === t.toLowerCase();
  };
});

type.isObject({}) // true
type.isNumber(NaN) // true
type.isRegExp(/abc/) // true
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末萝勤,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子呐伞,更是在濱河造成了極大的恐慌敌卓,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件伶氢,死亡現場離奇詭異趟径,居然都是意外死亡瘪吏,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門蜗巧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掌眠,“玉大人,你說我怎么就攤上這事幕屹±侗” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵望拖,是天一觀的道長渺尘。 經常有香客問我,道長靠娱,這世上最難降的妖魔是什么沧烈? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮像云,結果婚禮上锌雀,老公的妹妹穿的比我還像新娘。我一直安慰自己迅诬,他們只是感情好腋逆,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侈贷,像睡著了一般惩歉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上俏蛮,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天撑蚌,我揣著相機與錄音,去河邊找鬼搏屑。 笑死争涌,一個胖子當著我的面吹牛,可吹牛的內容都是我干的辣恋。 我是一名探鬼主播亮垫,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼伟骨!你這毒婦竟也來了饮潦?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤携狭,失蹤者是張志新(化名)和其女友劉穎继蜡,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡稀并,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年鲫剿,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稻轨。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖雕凹,靈堂內的尸體忽然破棺而出殴俱,到底是詐尸還是另有隱情,我是刑警寧澤枚抵,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布线欲,位于F島的核電站,受9級特大地震影響汽摹,放射性物質發(fā)生泄漏李丰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一逼泣、第九天 我趴在偏房一處隱蔽的房頂上張望趴泌。 院中可真熱鬧,春花似錦拉庶、人聲如沸嗜憔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吉捶。三九已至,卻和暖如春皆尔,著一層夾襖步出監(jiān)牢的瞬間呐舔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工慷蠕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留珊拼,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓砌们,卻偏偏與公主長得像杆麸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子浪感,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)昔头,也就是一...
    悟名先生閱讀 4,149評論 0 13
  • ??引用類型的值(對象)是引用類型的一個實例揭斧。 ??在 ECMAscript 中,引用類型是一種數據結構,用于將數...
    霜天曉閱讀 1,056評論 0 1
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創(chuàng)建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,233評論 0 4
  • 這幾天讹开,韓國棋手李世石與谷歌公司研發(fā)的人工機器人的圍棋大戰(zhàn)引起了許多人的關注盅视,當然我也不例外,隨著最后一場比賽的結...
    凌峰style閱讀 359評論 0 4
  • 全民罵小3渣男運動中我最感興趣的是狗仔們用什么系統把照片和視頻拍得還不錯也沒引起當事人注意旦万。 竊以為闹击,狗仔隊是使用...
    隔壁老濕閱讀 763評論 2 4