typeof 和instanceof的區(qū)別

typeof() 用于判斷變量的類型,instanceof 用于判斷 變量是否屬于某個對象的實列.

typeof用以獲取一個變量或者表達式的類型,typeof一般只能返回如下幾個結(jié)果:
number,boolean,string,function(函數(shù)),object(NULL,數(shù)組侧戴,對象),undefined。
其中 數(shù)組吸奴,對象和null都是返回一個object
如:
alert(typeof (123));//typeof(123)返回"number"
alert(typeof ("123"));//typeof("123")返回"string"

所以在判斷一個變量是否為數(shù)組時隐绵,可以使用 instanceof 如: a instanceof Array

instanceof用于判斷一個變量是否某個對象的實例,
如var a=new Array(); alert(a instanceof Array);會返回true盲链,
同時alert(a instanceof Object)也會返回true;這是因為Array是object的子類蝇率。
再如:function test(){};var a=new test();alert(a instanceof test)會返回true迟杂。

Object.prototype.toString 返回一種標準格式字符串,所以上例可以通過 slice 截取指定位置的字符串本慕,如下所示:

Object.prototype.toString.call([]) // "[object Array]"
Object.prototype.toString.call({}) // "[object Object]"
Object.prototype.toString.call(2) // "[object Number]"
注:這種變化可以從 IE8 和 Firefox 4 中看出區(qū)別排拷,如下所示:

// IE8
Object.prototype.toString.call(null) // "[object Object]"
Object.prototype.toString.call(undefined) // "[object Object]"

// Firefox 4
Object.prototype.toString.call(null) // "[object Null]"
Object.prototype.toString.call(undefined) // "[object Undefined]"
測試為定義變量

typeof foo !== 'undefined'
上面代碼會檢測 foo 是否已經(jīng)定義;如果沒有定義而直接使用會導(dǎo)致 ReferenceError 的異常锅尘。 這是 typeof 唯一有用的地方监氢。

結(jié)論

為了檢測一個對象的類型,強烈推薦使用 Object.prototype.toString 方法藤违; 因為這是唯一一個可依賴的方式浪腐。正如上面表格所示,typeof 的一些返回值在標準文檔中并未定義顿乒, 因此不同的引擎實現(xiàn)可能不同议街。

除非為了檢測一個變量是否已經(jīng)定義,我們應(yīng)盡量避免使用 typeof 操作符璧榄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末傍睹,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子犹菱,更是在濱河造成了極大的恐慌拾稳,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腊脱,死亡現(xiàn)場離奇詭異访得,居然都是意外死亡,警方通過查閱死者的電腦和手機陕凹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門悍抑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人杜耙,你說我怎么就攤上這事搜骡。” “怎么了佑女?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵记靡,是天一觀的道長。 經(jīng)常有香客問我团驱,道長摸吠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任嚎花,我火速辦了婚禮寸痢,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘紊选。我一直安慰自己啼止,他們只是感情好道逗,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著献烦,像睡著了一般憔辫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仿荆,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天贰您,我揣著相機與錄音,去河邊找鬼拢操。 笑死锦亦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的令境。 我是一名探鬼主播杠园,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舔庶!你這毒婦竟也來了抛蚁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤惕橙,失蹤者是張志新(化名)和其女友劉穎瞧甩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弥鹦,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡肚逸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了彬坏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朦促。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栓始,靈堂內(nèi)的尸體忽然破棺而出务冕,到底是詐尸還是另有隱情,我是刑警寧澤幻赚,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布禀忆,位于F島的核電站,受9級特大地震影響坯屿,放射性物質(zhì)發(fā)生泄漏油湖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一领跛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧撤奸,春花似錦吠昭、人聲如沸喊括。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郑什。三九已至,卻和暖如春蒲肋,著一層夾襖步出監(jiān)牢的瞬間蘑拯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工兜粘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留申窘,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓孔轴,卻偏偏與公主長得像剃法,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子路鹰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345