javascript 類型判斷代碼分析
var is = function(obj,type){
var toString=Object.prototype.toString,undefined;
return obj===null&&type==='Null'||
obj===undefined&&type==='Undefined'||
toString.call(obj).slice(8,-1)===type;
}
//原文中有小括號(hào)包裹每個(gè)邏輯與運(yùn)算,但根據(jù)運(yùn)算符優(yōu)先級(jí),括號(hào)可以省略
//第一行聲明undefined,個(gè)人理解是為了提高性能,不必再去頂級(jí)作用域中查詢undefined.
根據(jù)ECMA-262中的解釋,Object.prototype.toString(),將返回對(duì)象實(shí)例的類型,返回格式"[object ", class, and "]"字符串。
所以 通過 slice截取'class'值,也就是類型值。
其中null與undefined例外,因?yàn)樗麄兎祷氐氖?
IE中[object Object]
標(biāo)準(zhǔn)瀏覽器[object Window]。
因此單獨(dú)拿出判斷。
相關(guān)文章:javascript 深拷貝
相關(guān)文章
JS 在數(shù)組插入字符的實(shí)現(xiàn)代碼(可參考JavaScript splice() 方法)
在數(shù)組插入字符,添加數(shù)組,刪除數(shù)組可以用slice自帶的方法。操作比較方便,這個(gè)代碼是作者通過push與shift方法實(shí)現(xiàn),只能是個(gè)思路,但不推薦這樣的方法。2009-12-12js實(shí)現(xiàn)頁面轉(zhuǎn)發(fā)功能示例代碼
本文為大家介紹的是使用js實(shí)現(xiàn)頁面轉(zhuǎn)發(fā),具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08JavaScript canvas實(shí)現(xiàn)環(huán)形漸變進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了JavaScript canvas實(shí)現(xiàn)環(huán)形漸變進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06實(shí)現(xiàn)非常簡(jiǎn)單的js雙向數(shù)據(jù)綁定
Angular實(shí)現(xiàn)了雙向綁定機(jī)制。所謂的雙向綁定,無非是從界面的操作能實(shí)時(shí)反映到數(shù)據(jù),數(shù)據(jù)的變更能實(shí)時(shí)展現(xiàn)到界面。本文給大家詳細(xì)介紹js雙向數(shù)據(jù)綁定,感興趣的朋友參考下2015-11-11小程序短信驗(yàn)證碼頁面實(shí)現(xiàn)demo
這篇文章主要為大家介紹了小程序短信驗(yàn)證碼頁實(shí)現(xiàn)demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11不錯(cuò)的用外部Javascript修正特定網(wǎng)頁內(nèi)容
不錯(cuò)的用外部Javascript修正特定網(wǎng)頁內(nèi)容...2007-08-08js前端實(shí)現(xiàn)圖片懶加載(lazyload)的兩種方式
本篇文章主要介紹了js前端實(shí)現(xiàn)圖片懶加載(lazyload)的兩種方式 ,使用圖片懶加載可以提高網(wǎng)頁運(yùn)行速度,有興趣的可以了解一下。2017-04-04artDialog+plupload實(shí)現(xiàn)多文件上傳
這篇文章主要介紹了artDialog+plupload實(shí)現(xiàn)多文件上傳的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-07-07微信小程序?qū)崿F(xiàn)答題倒計(jì)時(shí)
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)答題倒計(jì)時(shí),自定義計(jì)時(shí)器功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09