js中基于數(shù)據(jù)類(lèi)型檢測(cè)的方式有哪些-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“js中基于數(shù)據(jù)類(lèi)型檢測(cè)的方式有哪些”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“js中基于數(shù)據(jù)類(lèi)型檢測(cè)的方式有哪些”這篇文章吧。

成都創(chuàng)新互聯(lián)專(zhuān)注于普安網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供普安營(yíng)銷(xiāo)型網(wǎng)站建設(shè),普安網(wǎng)站制作、普安網(wǎng)頁(yè)設(shè)計(jì)、普安網(wǎng)站官網(wǎng)定制、重慶小程序開(kāi)發(fā)服務(wù),打造普安網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供普安網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。

1、typeof 用來(lái)檢測(cè)數(shù)據(jù)類(lèi)型的運(yùn)算符 

console.log(typeof 12)//Number

使用typeof檢測(cè)數(shù)據(jù)類(lèi)型,首先返回的都是字符串 ,其次字符串中包含了對(duì)應(yīng)的數(shù)據(jù)類(lèi)型

例如:"number"、"string"、"boolean"、"undefined"、"function"、"object"

console.log(typeof typeof function(){}) //string

局限性:

typeof null -> "object"

不能具體的細(xì)分是數(shù)組還是正則,還是對(duì)象中其他的值,因?yàn)槭褂胻ypeof檢測(cè)數(shù)據(jù)類(lèi)型,對(duì)于對(duì)象數(shù)據(jù)類(lèi)型中的值,最后返回的結(jié)果都是"object"

2、instanceof 檢測(cè)某一個(gè)實(shí)例是否屬于某個(gè)類(lèi)

var obj = [12,23];
    console.log(obj instanceof Array);

局限性:

對(duì)于基本數(shù)據(jù)類(lèi)型來(lái)說(shuō),字面量方式創(chuàng)建出來(lái)的結(jié)果和實(shí)例方式創(chuàng)建出來(lái)的結(jié)果是有一定的區(qū)別的。從嚴(yán)格意義上講,只有實(shí)例創(chuàng)建出來(lái)的結(jié)果才是標(biāo)準(zhǔn)的對(duì)象數(shù)據(jù)類(lèi)型值,也是標(biāo)準(zhǔn)的Number這個(gè)類(lèi)的一個(gè)實(shí)例;對(duì)于字面量方式創(chuàng)建出來(lái)的結(jié)果是基本的數(shù)據(jù)類(lèi)型值,不是嚴(yán)謹(jǐn)?shù)膶?shí)例,但是由于JS的松散特點(diǎn),導(dǎo)致了可以使用Number.prototype上的方法

1)、不能用來(lái)檢測(cè)和處理字面量方式創(chuàng)建出來(lái)的基本數(shù)據(jù)類(lèi)型值

console.log(1 instanceof Number);//false
console.log(new Number(1) instanceof Number)//true

2)、instanceof的特性:只要在當(dāng)前實(shí)例的原型鏈上,我們用其檢測(cè)的結(jié)果都為true

var ary = [];
    console.log(ary instanceof Array);//true
    console.log(ary instanceof Object);//true

    function fn(){

    }
    console.log(fn instanceof Function);//true
    console.log(fn instanceof Object);//true

3、constructor 構(gòu)造函數(shù) 作用和instanceof非常的相似  constructor可以處理基本數(shù)據(jù)類(lèi)型的檢測(cè)

constructor檢測(cè)Object和instanceof不一樣 一般情況下是檢測(cè)不了的

var obj = [];
    console.log(obj.constructor === Array)//true

    var num = 1;
    console.log(num.constructor === Number)//true

局限性:我們可以把類(lèi)的原型進(jìn)行重寫(xiě),在重寫(xiě)的過(guò)程中很有可能出現(xiàn)把之前的constructor給覆蓋掉了,這樣檢測(cè)出來(lái)的結(jié)果就不準(zhǔn)確了。

對(duì)于特殊的數(shù)據(jù)類(lèi)型null和undefined,他們所屬的類(lèi)是Null和Undefined,但是瀏覽器把這兩個(gè)類(lèi)保護(hù)起來(lái)了,不允許我們?cè)谕饷嬖L問(wèn)使用

4、Object.prototype.toString.call() 最準(zhǔn)確最常用的方式 各種類(lèi)型的都可以檢測(cè)(基本和引用)

首先獲取Object原型上的toString方法,讓方法執(zhí)行,并且改變方法中的this關(guān)鍵字的指向

toString的理解:

表面上看應(yīng)該是轉(zhuǎn)化成字符串,但是某些toString方法不僅僅是轉(zhuǎn)換為字符串

對(duì)于Number、String、Boolean、Array、RegExp、Date、Function原型上的toString方法都是把當(dāng)前的數(shù)據(jù)類(lèi)型轉(zhuǎn)化為字符串的類(lèi)型(他們的作用僅僅是用來(lái)轉(zhuǎn)換為字符串的)

Object.prototype.toString()并不是用來(lái)轉(zhuǎn)化為字符串的,他的作用是返回當(dāng)前方法執(zhí)行主體(方法中的this)所屬類(lèi)的詳細(xì)信息?! ?/p>

({name:"李四"}).toString() //[object object]
    Math.toString()//[object Math]
({name:"李四"}).toString() //[object object]
    Math.toString()//[object Math]

    var obj = {name:"張三"};
    console.log(obj.toString())//toString中的this是obj,返回的是obj所屬的類(lèi)的信息。[object Object] 第一個(gè)object代表當(dāng)前實(shí)例是對(duì)象數(shù)據(jù)類(lèi)型的(這個(gè)是固定的),第二個(gè)Object代表的是obj所屬的類(lèi)是Object

console.log((1).toString()) // "1" Number.prototype.toString轉(zhuǎn)化為字符串

console.log((128).toString(2/8/10)) 把數(shù)字轉(zhuǎn)化為2進(jìn)制、8進(jìn)制、10進(jìn)制

所以上面的方法的檢測(cè)如下 

var ary = [];
    console.log(Object.prototype.toString.call(ary))//[object Array]

以上是“js中基于數(shù)據(jù)類(lèi)型檢測(cè)的方式有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站muchs.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前題目:js中基于數(shù)據(jù)類(lèi)型檢測(cè)的方式有哪些-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article44/dchjee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站建設(shè)小程序開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)