摘要:正確判斷數(shù)據(jù)類(lèi)型總結(jié)記錄判斷中的數(shù)據(jù)類(lèi)型有一下幾種方法三方庫(kù)。只有一個(gè)值得數(shù)據(jù)類(lèi)型,邏輯上講,值表示一個(gè)空對(duì)象指針。
正確判斷js數(shù)據(jù)類(lèi)型 總結(jié)記錄
判斷js中的數(shù)據(jù)類(lèi)型有一下幾種方法:typeof、instanceof、 constructor、 prototype、 三方庫(kù)。
js六大數(shù)據(jù)類(lèi)型number: 數(shù)字,整數(shù)、浮點(diǎn)數(shù)等等, string: 單引號(hào)或者雙引號(hào)來(lái)說(shuō)明, Boolean: 返回true和false,這兩個(gè)值不一定對(duì)應(yīng)1和0 object: 對(duì)象,可以執(zhí)行new操作符后跟要?jiǎng)?chuàng)建的對(duì)象類(lèi)型的名稱(chēng)來(lái)創(chuàng)建。 null: 只有一個(gè)值得數(shù)據(jù)類(lèi)型,邏輯上講,null值表示一個(gè)空對(duì)象指針。 undefined:未定義,使用var聲明變量但未對(duì)其初始化時(shí),變量的值就是undefined。1、typeof
在實(shí)際的項(xiàng)目應(yīng)用中,typeof只有兩個(gè)用途,就是檢測(cè)一個(gè)元素是否為undefined,或者是否為function。原因如下:
JavaScript Garden整理出來(lái)了如下表格
Value function typeof ------------------------------------- "foo" String string new String("foo") String object 1.2 Number number new Number(1.2) Number object true Boolean boolean new Boolean(true) Boolean object new Date() Date object new Error() Error object [1,2,3] Array object new Array(1, 2, 3) Array object new Function("") Function function /abc/g RegExp object new RegExp("meow") RegExp object {} Object object new Object() Object object2、instanceof
var a = [1,2,3]; var b = new Date(); var c = function(){}; alert(a instanceof Array) ---------------> true alert(b instanceof Date) alert(c instanceof Function) ------------> true alert(c instanceof function) ------------> false3、constructor
var a = [1,2,3]; var b = new Date(); var c = function(){}; alert(a.constructor === Array) ----------> true alert(b.constructor === Date) -----------> true alert(c.constructor === Function) -------> true
注:
? ? ? 使用instaceof和construcor,被判斷的引用類(lèi)型(Object Array)必須是在當(dāng)前頁(yè)面聲明的!比如,一個(gè)頁(yè)面(父頁(yè)面)有一個(gè)框架,框架中引用了一個(gè)頁(yè)面(子頁(yè)面),在子頁(yè)面中聲明了一個(gè)array,并將其賦值給父頁(yè)面的一個(gè)變量,這時(shí)判斷該變量,Array ==object.constructor;會(huì)返回false;
原因:
1、array屬于引用型數(shù)據(jù),在傳遞過(guò)程中,僅僅是引用地址的傳遞。
2、每個(gè)頁(yè)面的Array原生對(duì)象所引用的地址是不一樣的,在子頁(yè)面聲明的array,所對(duì)應(yīng)的構(gòu)造函數(shù),是子頁(yè)面的Array對(duì)象;父頁(yè)面來(lái)進(jìn)行判斷,使用的Array并不等于子頁(yè)面的Array。
Object.prototype.toString.call()
var toString = Object.prototype.toString; toString.call(undefined); -------------> [object Undefined] toString.call(null); -------------> [object Null] toString.call(new Date); -------------> [object Date] toString.call(new String); -------------> [object String] toString.call(Math); -------------> [object Math]
jQuery.type()源碼
var class2type = {} ; "Boolean Number String Function Array Date RegExp Object Error".split(" ").forEach(function(e,i){ class2type[ "[object " + e + "]" ] = e.toLowerCase(); }) ; function _typeof(obj){ if ( obj == null ){ return String( obj ); } return typeof obj === "object" || typeof obj === "function" ? class2type[ class2type.toString.call(obj) ] || "object" : typeof obj; }
注:數(shù)組還可以用 Array.isArray(); 或者根據(jù)其具有的方法去判斷。不再細(xì)述
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/99077.html
摘要:前端知識(shí)點(diǎn)總結(jié)高級(jí)持續(xù)更新中字符串什么是連續(xù)存儲(chǔ)多個(gè)字符的字符數(shù)組相同下標(biāo)遍歷選取不同類(lèi)型不同不通用所有字符串都無(wú)權(quán)修改原字符串,總是返回新字符串大小寫(xiě)轉(zhuǎn)換統(tǒng)一轉(zhuǎn)大寫(xiě)統(tǒng)一轉(zhuǎn)小寫(xiě)何時(shí)不區(qū)分大小寫(xiě)時(shí),都需要先轉(zhuǎn)為一致的大小寫(xiě),再比較。 前端知識(shí)點(diǎn)總結(jié)——JS高級(jí)(持續(xù)更新中) 1.字符串 什么是: 連續(xù)存儲(chǔ)多個(gè)字符的字符數(shù)組 相同: 1. 下標(biāo) 2. .length 3. 遍歷 4....
摘要:需要對(duì)每個(gè)用戶的每個(gè)內(nèi)容對(duì)象維護(hù)一個(gè)數(shù)據(jù)結(jié)構(gòu)。并沒(méi)有直接和相連,所以是將數(shù)據(jù)由暫存的內(nèi)存中取出。采用實(shí)現(xiàn)的可用進(jìn)行數(shù)據(jù)提交。記錄的完成情況,包括未嘗試未學(xué)習(xí)未完成,已完成。 簡(jiǎn)介 SCORM定義了一個(gè)網(wǎng)絡(luò)化學(xué)習(xí)的內(nèi)容聚合模型(Content Aggregaion Model)和學(xué)習(xí)對(duì)象的實(shí)時(shí)運(yùn)行環(huán)境(Run-time Environment)。簡(jiǎn)單說(shuō),它是為了滿足對(duì)網(wǎng)絡(luò)化學(xué)習(xí)內(nèi)容的高水...
摘要:在近期看到了函數(shù)式編程這本書(shū)預(yù)售的時(shí)候就定了下來(lái)。主要目的是個(gè)人目前還是不理解什么是函數(shù)式編程。且和現(xiàn)在在學(xué)習(xí)函數(shù)式編程有莫大的關(guān)系。加速大概了解了函數(shù)式編程之后。總結(jié)看完了第一章也是可以小結(jié)一下的函數(shù)式編程。 本文章記錄本人在學(xué)習(xí) 函數(shù)式 中理解到的一些東西,加深記憶和并且整理記錄下來(lái),方便之后的復(fù)習(xí)。 在近期看到了《JavaScript函數(shù)式編程》這本書(shū)預(yù)售的時(shí)候就定了下...
摘要:最常見(jiàn)的判斷方法它的官方解釋操作符返回一個(gè)字符串,表示未經(jīng)計(jì)算的操作數(shù)的類(lèi)型。另外,是判斷對(duì)象是否屬于某一類(lèi)型,而不是獲取的對(duì)象的類(lèi)型。多個(gè)窗口意味著多個(gè)全局環(huán)境,不同的全局環(huán)境擁有不同的全局對(duì)象,從而擁有不同的內(nèi)置類(lèi)型構(gòu)造函數(shù)。 js中的數(shù)據(jù)類(lèi)型 js中只有六種原始數(shù)據(jù)類(lèi)型和一個(gè)Object: Boolean Null Undefined Number String Symbol ...
摘要:接口測(cè)試主要用于檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。隨著案例和執(zhí)行結(jié)果的不斷積累,接口測(cè)試覆蓋會(huì)更加充分,統(tǒng)計(jì)結(jié)果會(huì)更加精確。 原文出自【聽(tīng)云技術(shù)博客】:http://blog.tingyun.com/web/a... 今年遇到了幾個(gè)問(wèn)題,與接口的功能和性能相關(guān),恰巧最近公司也在組織以冒煙測(cè)試為主題的活動(dòng),于是乎突發(fā)奇想,尋思著能否將接口測(cè)試與冒煙測(cè)試結(jié)合起來(lái),發(fā)掘一...
閱讀 3492·2021-11-18 10:07
閱讀 1590·2021-11-04 16:08
閱讀 1515·2021-11-02 14:43
閱讀 1093·2021-10-09 09:59
閱讀 846·2021-09-08 10:43
閱讀 1084·2021-09-07 09:59
閱讀 968·2019-12-27 11:56
閱讀 1016·2019-08-30 15:56