摘要:類型判斷在中,核心給我們提供了方法來判斷一個變量的類型,返回的是字符串型,但是對于數(shù)組,或者對象和函數(shù),我們就沒有什么辦法了。更新一個類型判斷的插件代碼擴展工具
javascript類型判斷
在js中,核心給我們提供了typeof方法來判斷一個變量的類型,返回的是字符串型,但是對于數(shù)組,或者對象和函數(shù),我們就沒有什么辦法了。但是我們可以引用對象也就是Object的toString方法來實現(xiàn)對類型的判斷,例:
例子
var arr = []; console.log(typeof arr);//object console.log(Object.prototype.toString.call(arr));//[object Array]
Ps:對于數(shù)組而言,arr的typeof后的類型是Object,這并不是我們想要的,而用Object的toString方法來說就很明確的可以判斷出是什么類型的了,但是[object Array]這種形式,我們不好在程序里面來處理,所以本人在日常工作中封裝了一個簡單的方法來返回出類型的字符串,例:
例子
function getType(ele){ if(!ele)return undefined; var type = Object.prototype.toString.call(ele), reg = /[object (.*)]/, arr = reg.exec(type); return arr[1]; }
Ps:這樣就返回了一個字符串形式的類型,可以返回String,Number,Bloolen,Function,Array,Object,undefined,Null這幾個字符串,那么在程序中就好判斷了。
更新一個類型判斷的插件代碼
var Type = (function() { var Type = function() { if (!this instanceof Type) { return new Type(); } }; var menth = { version: "v1.0", getType: function(ele) { if (window == document && document != window) { return "window"; } else if (ele.nodeType === 9) { return "document"; } else if (ele.callee) { return "arguments"; } else if (isFinite(ele.length) && ele.item) { return "NodeList"; } else { var type = Object.prototype.toString.call(ele), reg = /[object (.*)]/, arr = reg.exec(type); return arr[1]; } }, isArray : function(ele){ return (this.getType(ele) === "Array") ? true : false; }, isFunction : function(ele){ return (this.getType(ele) === "Function") ? true : false; }, isObject : function(ele){ return (this.getType(ele) === "Object") ? true : false; }, isString : function(ele){ return (this.getType(ele) === "String") ? true : false; }, isNumber : function(ele){ return (this.getType(ele) === "Number") ? true : false; }, isBoolen : function(ele){ return (this.getType(ele) === "Boolean") ? true : false; }, isUndefined : function(ele){ return (this.getType(ele) === "Undefined") ? true : false; }, isNull : function(ele){ return (this.getType(ele) === "Null") ? true : false; } } Type = extendDeep(Type.prototype,menth); // 擴展工具 function extendDeep() { var i, target = arguments[0] || {}, astr = "[object Array]", toStr = Object.prototype.toString, yArr = Array.prototype.slice.call(arguments, 1); for (i = 0, len = yArr.length; i < len; i++) { var temp = yArr[i]; for (var j in temp) { if (target.hasOwnProperty(j) && (target[i] === temp[i])) { continue; } if (temp.hasOwnProperty(j)) { if (typeof temp[j] === "object") { target[j] = (toStr.call(temp[j] === astr)) ? [] : {}; extendDeep(target[j], temp[j]); } else { if (typeof temp[j] !== "undefined") { target[j] = temp[j]; } } } } } return target; } console.log(Type) return Type; })();
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/87661.html
摘要:不過,根據(jù)伯克利大學的這篇文章來看,擁有豐富的開源庫,是開發(fā)者在選擇一門開發(fā)語言時,最重要的因素。擁有超過個可用的開源庫,是目前世界上最大的開源庫集合。月份,我們發(fā)布了。這和年的情況是相反的。在的調(diào)查中,超過的受訪者表示他們正在使用。 showImg(https://segmentfault.com/img/bVblvke?w=693&h=300); 原文標題:This year in...
摘要:原文鏈接翻譯于今天我們興奮的發(fā)布了的嘗鮮版,一個新的靜態(tài)類型檢查器。為添加了靜態(tài)類型檢查,以提高開發(fā)效率和代碼質(zhì)量。這最終形成一個高度并行增量式的檢查架構,類似。知道縮小類型范圍時做動態(tài)檢查的影響。 原文鏈接:https://code.facebook.com/posts/1505962329687926/flow-a-new-static-type-checker-for-java...
摘要:前端業(yè)務代碼工具庫不定時更新目的高效率完成前端業(yè)務代碼業(yè)務開發(fā)過程中,會經(jīng)常用到擴展方法瀏覽器類型判斷表單驗證常用方法等常用函數(shù),為避免不同項目多次復制粘貼的麻煩,這里統(tǒng)一封裝,并發(fā)布到,以提高開發(fā)效率。 utilscoreJS 前端業(yè)務代碼工具庫(不定時更新) 目的:高效率完成前端業(yè)務代碼 業(yè)務開發(fā)過程中,會經(jīng)常用到String,Number,Array,Object,Functio...
摘要:詳情怎樣規(guī)避地獄作者先介紹什么是地獄,以及在開發(fā)過程中怎樣去規(guī)避地獄,一時爽性能問題火葬場。詳情其他亮點匯總開發(fā)者大會已于北京時間月日凌晨在美國山景城正式啟幕。 【前端】 1. JavaScript 的新數(shù)據(jù)類型:BigInt BigInt?是 JavaScript 中的一個新的數(shù)字基本(primitive)類型,可以用任意精度表示整數(shù)。使用?BigInt?可以安全地存儲和操作大整數(shù),...
摘要:詳情怎樣規(guī)避地獄作者先介紹什么是地獄,以及在開發(fā)過程中怎樣去規(guī)避地獄,一時爽性能問題火葬場。詳情其他亮點匯總開發(fā)者大會已于北京時間月日凌晨在美國山景城正式啟幕。 【前端】 1. JavaScript 的新數(shù)據(jù)類型:BigInt BigInt?是 JavaScript 中的一個新的數(shù)字基本(primitive)類型,可以用任意精度表示整數(shù)。使用?BigInt?可以安全地存儲和操作大整數(shù),...
閱讀 4122·2022-09-16 13:49
閱讀 1398·2021-11-22 15:12
閱讀 1519·2021-09-09 09:33
閱讀 1039·2019-08-30 13:15
閱讀 1720·2019-08-29 15:30
閱讀 654·2019-08-27 10:52
閱讀 2643·2019-08-26 17:41
閱讀 1896·2019-08-26 12:11