這個(gè)類庫(kù)是干嘛的?
平時(shí)項(xiàng)目的開(kāi)發(fā)難免遇到大量的邏輯判斷,于是我將一些常用的判斷封裝成了一個(gè)js類庫(kù),judge.js是我用業(yè)余時(shí)間寫(xiě)的一個(gè)js判斷類庫(kù),可以用來(lái)判斷數(shù)據(jù)類型(isFunction,isObject,isJson,isArray等),判斷瀏覽器內(nèi)核,判斷移動(dòng)和PC端瀏覽器名稱,判斷用戶設(shè)備類型(安卓設(shè)備,iOS設(shè)備等),判斷安卓IOS系統(tǒng)版本和做一些存在性信息校驗(yàn)(郵箱,郵編,電話,手機(jī)等等),還可以用于斷言。他的特點(diǎn)有:
沒(méi)有任何依賴
支持 AMD & CommonJS
輕量級(jí)(10kb)
judge.js一個(gè)用來(lái)做判斷的js類庫(kù)沒(méi)有任何依賴
支持 AMD & CommonJS
輕量級(jí)(10kb)
$ npm install $ gulp compress
DEMO:http://hawx1993.github.io/jud...開(kāi)始
使用npm安裝judgejs:
$ npm install judgejs
使用bower 安裝judgejs
$ bower install judgejs目錄
使用方法
數(shù)據(jù)類型判斷
平臺(tái)判斷
設(shè)備判斷
存在性和信息校驗(yàn)
使用方法var judge = require("judgejs"); judge.version =>0.7.0
可以用$來(lái)代替judge。例如:
require("../judge.js") $.version; => 0.7.0API 數(shù)據(jù)類型判斷
judge.isArray(value)
judge.isArray(["foo","bar",{"name":"trigkit4"}]) => true
judge.isInt(num)
var num = 3.14; judge.isInt(num); =>false
judge.isError(value)
判斷給定值是否是Error
judge.isJson(json)
判斷給定值是否是json格式
var str = "{"name":"jack"}"; judge.isJson(str);//false var json = JSON.parse(str); judge.isJson(json);//true
judge.isFunction()
判斷給定值是否是函數(shù):
var fn = new Function (); judge.isFunction(fn); =>true
judge.isString()
判斷一個(gè)給定的值是否是字符串,返回布爾值
judge.isObject()
判斷一個(gè)給定的值是否是對(duì)象,返回布爾值;其中:
array,object,number,string,null,function,boolean被視為對(duì)象,空字符串和undefined為非對(duì)象。
var obj = Object.create(null); judge.isObject(obj);//true judge.isObject(undefined);//false
judge.isObjectLike(value)
判斷參數(shù)value是否是object-like:
judge.isObjectLike([NaN]); =>true judge.isObjectLike(null); =>false
judge.type()
判斷值的類型,包括:
array,object,number,string,null,undefined,function,boolean
var arr = new Array; judge.type(arr);//array var obj = {}; judge.type(obj);//object var num = Number(1); judge.type(num);//number var str = "123"; judge.type(str);//string var n = null; judge.type(n);//null var u = undefined; judge.type(u);//undefined var fn = function () {}; judge.type(fn);//function var bool = Boolean(); judge.type(bool);//boolean var proto = Object.prototype; judge.type(proto);//object function Person(){} var p1 = new Person(); judge.type(p1);//object
judge.isEqual()
判斷兩個(gè)給定值是否是嚴(yán)格相等:
var judge = require("judgejs"); var str = Boolean(true); var str2 = !!true; var str3 = true; var obj1 = {}; var obj2 = new Object(); var obj4 = Object.create(null); var foo = {name:"trigkit4"}; var bar = {age:23}; var baz = Object.assign(foo,bar); var obj3 = { name: "trigkit4", age: 23 }; judge.isEqual(str,str2,str3);//true judge.isEqual(obj1,obj2,obj4);//false judge.isEqual(str,str2,str3);//true judge.isEqual(baz,obj3);//false,refer address different
judge.isChar()
判斷給定值是否是字符
judge.isRegExp(reg)
判斷給定值是否是RegExp對(duì)象:
var reg = /^(a,z)/i; judge.isRegExp(reg); => true judge.isRegExp("/[a-z]/"); =>false
judge.isLength(value)
判斷value是否是有效的類數(shù)組長(zhǎng)度
judge.isLength(Infinity); =>false var arr = Number([]); judge.isLength(arr); >true
judge.isWindow(obj)
判斷是否是window對(duì)象。
judge.isDocument()
判斷是否是Document對(duì)象
judge.isPlainObject(obj)
判斷obj是否是純粹的對(duì)象,純粹的對(duì)象是通過(guò){}創(chuàng)建或者通過(guò)new Object()創(chuàng)建
judge.isPlainObject(window); =>false var arr = Number([]); judge.isPlainObject(arr); =>false judge.isPlainObject(new Date()); =>false judge.isPlainObject({});//true
judge.isArrayLike(obj)
判斷obj是否是類數(shù)組對(duì)象(類數(shù)組對(duì)象被限定為擁有非負(fù)整數(shù)屬性的對(duì)象,NodeList,arguments,Array等):
judge.isArrayLike(document.body.children); =>true var obj = [{name:"null"}]; judge.isArrayLike(obj); =>true judge.isArrayLike(null); =>false
judge.isArrayLikeObject(value)
和judge.isArrayLike類似,但isArrayLikeObject會(huì)檢測(cè)value是否是對(duì)象
judge.isArrayLikeObject("abcd");//false judge.isArrayLikeObject(document.body.children);//true
judge.isArguments(value)
判斷參數(shù)value是否是一個(gè)arguments對(duì)象:
judge.isArguments(function(){ return arguments;}()) =>true
judge.isSet(value)
判斷給定值是否不為null和undefined
judge.idNumber(id)
判斷你的身份證號(hào)碼是否符合規(guī)范,其中X不區(qū)分大小寫(xiě):
var id = "35050019970323505x"; judge.idNumber(id); => true
judge.isOdd(num)
判斷給定值是否是奇數(shù),返回布爾值
judge.min(a,b)
判斷給定的數(shù)值中誰(shuí)是最小值,并返回最小值
judge.min(0,-1); =>-1
judge.isEven(num)
判斷一個(gè)給定的值是否是偶數(shù),返回布爾值
$.isEven(null); =>false
judge.isNull(value)
judge.isNull(void 0); =>true judge.isNull(null); =>true
judge.isUndefined(value)
judge.isUndefined(null); =>false judge.isUndefined(void 0); =>true
judge.isNumber(num)
judge.isNumber(Infinity); =>true平臺(tái)判斷
judge.kernel()
用于檢測(cè)當(dāng)前瀏覽器的內(nèi)核(排版引擎),可以檢測(cè)的類型如下:
webkit,gecko,trident,edge,opera
瀏覽器的內(nèi)核分別用于檢測(cè)Chrome瀏覽器,F(xiàn)irefox瀏覽器,IE瀏覽器,Edge瀏覽器和Opera瀏覽器
if(judge.kernel() == "webkit"){...} //引號(hào)處不能出現(xiàn)空格等不規(guī)范寫(xiě)法
judge.platform()
檢測(cè)用戶當(dāng)前設(shè)備,可以檢測(cè)的類型如下:
android,iPad,ios,windowsPhone,mac,windows,linux,blackBerry,androidTablet
if(judge.platform() == "androidTablet"){...}
參數(shù)也如上所示,千萬(wàn)不能寫(xiě)錯(cuò),不然檢測(cè)就會(huì)出現(xiàn)錯(cuò)誤。參數(shù)采用駝峰命名法
judge.browser()
檢測(cè)當(dāng)前瀏覽器類型,可以檢測(cè)的類型如下:
"IE6","IE7","IE8", "IE9", "IE10", "IE11","firefox","edge","sougou","liebao","liebao mobile","weixin","uc","mobile uc","baidu browser","mobile baidu","mobile qqbrowser","qqbrowser","opera","miui browser","oppo browser","mobile safari","android chrome", "ios chrome","chrome", "safari","ios safari","Mbile IE各個(gè)版本"
如需匹配不同平臺(tái)的瀏覽器,需用judge.platform()再做一次匹配,使用場(chǎng)景可以是:
1.如果沒(méi)有傳入?yún)?shù),則返回瀏覽器的名稱,如:
judge.browser();//你的瀏覽器是Chrome的話 =>Chrome
2.傳入?yún)?shù)的情況下,返回布爾值,如:
judge.browser("isChrome"); =>true
參數(shù)如下所示,采用駝峰命名法:
"isFirefox","isIosChrome","isIpadSafari", "isEdge", "isSougou","isLiebao", "isLiebaoMobile","isWeiXin","isUC", "isUCMobile", "isBaidu", "isBaiduMobile", "isQQMobile","isQQBrowser", "isOpera", "isMiuiBrowser", "isOppoBrowser","isAndroidChrome","isChrome","isIosSafari","isSafari" 其中UC瀏覽器采用固定大寫(xiě)的寫(xiě)法。由于有的移動(dòng)端瀏覽器采用和瀏覽器不同的ua,所以不能共用(無(wú)法單純加一個(gè)`judge.isMobile()` or `judge.platform()=="android"`)。 //IE "isIE","isMobileIE+數(shù)字(如:isMobileIE10)","isIE+數(shù)字(6~11),如isIE10" //for example judge.browser("isIE11");//true,如果你的瀏覽器是IE11的話
judge.iosVersion()
判斷iOS 系統(tǒng)版本號(hào),返回?cái)?shù)字形式的版本號(hào):
judge.iosVersion(); =>9.0.2
judge.androidVersion()
同上
judge.isChromium()
判斷用戶的瀏覽器是否是套著chrome內(nèi)核的瀏覽器,返回布爾值
設(shè)備判斷judge.isMobile()
判斷用戶設(shè)備是否是移動(dòng)設(shè)備(ipad,iphone,ipod,android)
judge.isPc()
判斷用戶設(shè)備是否是PC
judge.iosDevice()
檢測(cè)iPhone手機(jī)設(shè)備類型,可以檢測(cè)如下類型的iPhone手機(jī):
iphone4(s) ,iphone5(s), iphone6(s),iphone6(s)Plus if(judge.iosDevice=="iphone6Plus"){...}
參數(shù)為:iphone4,iphone5,iphone6,iphone6Plus
$.iosDevice();//if your ios device is iphone6 =>iphone6
judge.androidDevice()
檢測(cè)安卓設(shè)備,現(xiàn)在只支持:mi4,魅族metal(mz-metal),魅族mx5,魅族mx3
TODO:準(zhǔn)備支持更多安卓手機(jī)設(shè)備
judge.isTouchDevice()
判斷用戶當(dāng)前設(shè)備是否是觸屏設(shè)備,返回布爾值Boolean
存在性和信息校驗(yàn)judge.isExist(value)
var str = null; judge.isExist(str) =>false var str = ""; judge.isExist(str) =>false
judge.lt(val1,val2)
判斷val1是否小于val2:
judge.lt(1,-2); =>false
judge.inArray(val,arr)
判斷參數(shù)val是否存在arr數(shù)組內(nèi):
var val = [{"name":"huang"},123], arr = [val,456]; judge.inArray(val,arr); =>true
judge.email(em)
判斷是否符合Email規(guī)范:
var email = "[email protected]"; judge.email(email); =>true var email2 = "[email protected]"; judge.email(email2); =>false
judge.hasLowerCase()
判斷是否含有小寫(xiě)字母:
var str ="trigkit4"; judge.hasLowerCase(str);
judge.hasNumber()
判斷給定值是否含有數(shù)字:
var num ="trigkit4"; judge.hasNumber(num); =>true
judge.hasCaptial()
判斷是否含有大寫(xiě)字母:
var str ="trigkit4"; judge.hasCapital(str);
judge.isBrowser()
判斷當(dāng)前客戶端是否是瀏覽器,返回布爾值
judge.size(val)
判斷給定值的大小,返回?cái)?shù)值:
var val = "瑯琊榜lyb"; judge.size(val); =>6
judge.isHttps()
判斷當(dāng)前站點(diǎn)是否是HTTPS,返回布爾值
judge.isUnique()
判斷一個(gè)給定數(shù)組的元素的值是否唯一:
var a = [1,2]; var arr = [1,2,3,4,a];//[1,2,3,4,[1,2]]; judge.isUnique(arr);//true var arary = ["1",1]; judge.isUnique(array);//true
judge.hasClass()
判斷給定值是否有class
judge.qqNumber()
判斷給定值是否符合QQ號(hào)規(guī)范,返回布爾值:
var qq = 345812345; judge.qqNumber(qq); =>true
judge.phoneNumber
判斷給定值是否符合手機(jī)號(hào)規(guī)范:
var num = 17755503789; judge.phoneNumber(num); =>true
judge.telPhone(num)
判斷電話號(hào)碼是否符合規(guī)范
judge.includeChinese
判斷給定值是否含有中文字符:
var ch = "js腳本"; judge.includeChinese(ch); => true
judge.onlyChinese(ch)
判斷給定字符是否僅有中文字符:
var ch = "zh中國(guó)"; judge.onlyChinese(ch); =>false
judge.onlyNumber()
判斷給定值是否只含有數(shù)字:
var s = "233"; judge.onlyNumber(s); =>true
judge.isElement(element)
判斷給定元素是否是DOM元素,返回布爾值
var div = document.createElement("div"); judge.isElement(div); =>true
judge.assert(value,desc)
你可以使用judge.assert 去斷言你想要斷言的值,如果該值通過(guò)斷言,描述不符將變?yōu)榫G色,否則變?yōu)榧t色;
function add(a,b){ return a + b; } var a = 1,b=2; judge.assert(add(1,2) === 3,"true"); judge.assert(add(2,3) === 6,"false");
在參數(shù)desc 部分去填寫(xiě)你的測(cè)試描述
judge.hasHash(url)
判斷一個(gè)給定的url是否有哈希值
var url = "www.baidu.com#w"; judge.hasHash(url); => true
judge.has(obj,key)
判斷obj是否有包含給定的鍵(key)
var obj ={ name:"trigkit4" }; judge.has(obj,"name"); =>true
judge.isUrl(url)
判斷一個(gè)給定的值是否是URL
var url = "www.jd.d"; judge.isUrl(url); =>false
judge.zipCode(code)
判斷給定值是否符合郵編規(guī)范:
var zipcode = 362014; judge.zipCode(zipcode); =>true
judge.include(str,substr)
var str = "microsoft"; var substr = "soft"; judge.include(str,substr); =>true
judge.isOnline()
可用于判斷設(shè)備是否聯(lián)網(wǎng),判斷斷網(wǎng)可用judge.isOnline==false,返回true,即斷網(wǎng)
judge.hasSpecialChar()
判斷是否含有特殊字符,除了大小寫(xiě)字母、數(shù)字和漢字以外的字符都被視為特殊字符
var char = "a!@#$%"; judge.hasSpecialChar(char); =>true
judge.isEmpty()
判斷給定值是否為空,null和undefined被視為空,
數(shù)字0被視為非空
var arr = [];//judge.isEmpty(arr); => true var n = null;//judge.isEmpty(n); => true var u = undefined;//judge.isEmpty(u); => true var num = 0;//judge.isEmpty(num); => false var obj = Object.create(null);//judge.isEmpty(obj); => true var str = "";//judge.isEmpty(str); => true
judge.position(element,parent)
判斷DOM元素位置,若只傳入element參數(shù),則返回其距離瀏覽器窗口的位置;
若傳入parent參數(shù),則返回其距離父元素的位置。兼容IE瀏覽器
@{param}:parent 可選
judge.position(element).top ;//判斷元素距離頂部位置 judge.position(element,parent).left;//判斷元素距離父元素左邊的位置
judge.isNativeFn(fn)
判斷fn是否是原生方法,不能有括號(hào)
judge.isNativeFn(Object.assign); =>true var fn = new Function(); judge.isNativeFn(fn); =>false judge.isNativeFn(Array.prototype.filter) =>true var obj = { fn: function () {} }; judge.isNativeFn(obj.fn) =>false
judge.isIE8Plus(boolean)
判斷當(dāng)前瀏覽器是否是IE8+ (包含IE8),直接返回布爾值
參數(shù)如下:
true:包含IE8
judge.isIE8Plus(true);//include IE8
false:不包含IE8
judge.isIE8Plus(false);//exclude IE8
沒(méi)有參數(shù),默認(rèn)包含IE8
judge.strLength(str)
判斷字符長(zhǎng)度,返回?cái)?shù)字。一個(gè)中文字符被視為2,一個(gè)英文字符為視為1:
judge.strLength("你好China");//9
judge.isLeapYear(year)
判斷是否是閏年
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78756.html
摘要:更多資源請(qǐng)文章轉(zhuǎn)自月份前端資源分享視頻前端技術(shù)論壇融合不可錯(cuò)過(guò)的迷你庫(kù)測(cè)試框架實(shí)例教程為你詳細(xì)解讀請(qǐng)求頭的具體含意解析的庫(kù)如果要用前端框架,開(kāi)發(fā)流程是怎樣的與有什么區(qū)別正確使用的方法是什么流程圖插件小如何讓元素只能輸入純文本前端技術(shù)中 更多資源請(qǐng)Star:https://github.com/maidishike... 文章轉(zhuǎn)自:https://github.com/jsfront...
摘要:讓你收獲滿滿碼個(gè)蛋從年月日推送第篇文章一年過(guò)去了已累積推文近篇文章,本文為年度精選,共計(jì)篇,按照類別整理便于讀者主題閱讀。本篇文章是今年的最后一篇技術(shù)文章,為了讓大家在家也能好好學(xué)習(xí),特此花了幾個(gè)小時(shí)整理了這些文章。 showImg(https://segmentfault.com/img/remote/1460000013241596); 讓你收獲滿滿! 碼個(gè)蛋從2017年02月20...
摘要:寫(xiě)在前面目前專注深入學(xué)習(xí),特花了點(diǎn)時(shí)間整理了一些前端學(xué)習(xí)相關(guān)的書(shū)籍。大致分為以下大系列系列系列基礎(chǔ)系列應(yīng)用系列進(jìn)階系列類庫(kù)系列框架系列。這些書(shū)籍在這里免費(fèi)提供下載,有興趣的一起學(xué)習(xí)。 寫(xiě)在前面 目前專注深入JavaScript學(xué)習(xí),特花了點(diǎn)時(shí)間整理了一些前端學(xué)習(xí)相關(guān)的書(shū)籍。 大致分為以下7大系列:CSS系列、DOM系列、JavaScript基礎(chǔ)系列、JavaScript應(yīng)用系列、Ja...
摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書(shū)了入門(mén),覺(jué)得看看這本書(shū)就足夠了。前端的異步解決方案之和異步編程模式在前端開(kāi)發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(shū)(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書(shū)的目的是以目前還在制定中的ECMASc...
閱讀 935·2021-11-08 13:22
閱讀 2863·2021-09-29 09:45
閱讀 2839·2021-09-09 11:52
閱讀 2271·2019-08-30 13:20
閱讀 3757·2019-08-29 13:28
閱讀 1375·2019-08-29 12:32
閱讀 2736·2019-08-29 11:10
閱讀 1655·2019-08-26 13:34