摘要:例如基本類(lèi)型數(shù)據(jù)將返回包裝對(duì)象復(fù)雜類(lèi)型對(duì)象引用類(lèi)型將直接返回返回當(dāng)前對(duì)象對(duì)應(yīng)的字符串形式。例如使用方法,可以在任意值上調(diào)用這個(gè)方法幫助我們判斷這個(gè)值的類(lèi)型。
工作中使用 typeof 、 instanceof 操作符往往無(wú)法得到數(shù)據(jù)的準(zhǔn)確類(lèi)型,本文將結(jié)合一些知識(shí)點(diǎn),寫(xiě)一個(gè)工具方法,來(lái)解決這個(gè)痛點(diǎn)。相關(guān)知識(shí)點(diǎn):
JavaScript 原生提供Object對(duì)象,所有其他對(duì)象都繼承自Object對(duì)象,即那些對(duì)象都是Object對(duì)象的實(shí)例。
Object對(duì)象本身是一個(gè)構(gòu)造函數(shù),也可以當(dāng)作工具方法使用,將任意值轉(zhuǎn)為對(duì)象。例如:
// 基本類(lèi)型數(shù)據(jù)將返回包裝對(duì)象 var str = "hello world"; str === Object( str ) // false Object( str ) instanceof String //true var num = 123 ; num === Object( num ) // false Object(num) instanceof Number // true //復(fù)雜類(lèi)型(對(duì)象、引用類(lèi)型)將直接返回 var obj = { name:"mirror" } obj === Object( obj ) // true var arr = [ "a" , "b" , "c" ] arr === Object( arr ) // true
Object.prototype.toString()返回當(dāng)前對(duì)象對(duì)應(yīng)的字符串形式。例如:
var obj = new Object(); obj.toString() // "[object object]"
Object的實(shí)例對(duì)象可以自定義toString方法,覆蓋掉Object.prototype.toString方法。例如:
var arr = [ "a" , "b" ]; arr.toString() // "a,b"
使用call方法,可以在任意值上調(diào)用這個(gè)方法,幫助我們判斷這個(gè)值的類(lèi)型。例如:
Object.prototype.toString.call(2) // "[object Number]" Object.prototype.toString.call("hello world" ) // "[object String]" Object.prototype.toString.call( true ) // "[object Boolean]"方法封裝
function type (data){ if(arguments.length === 0) return new Error("type方法未傳參"); var typeStr = Object.prototype.toString.call(data); return typeStr.match(/[object (.*?)]/)[1].toLowerCase(); } type( {} ) //"object" type( new Date() ) //"date" type( [] ) //"array"
詳細(xì)講解請(qǐng)參考阮一峰博客
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107981.html
摘要:可用于判斷多種數(shù)據(jù)類(lèi)型基本數(shù)據(jù)類(lèi)型和內(nèi)置對(duì)象,然而對(duì)于一些自定義構(gòu)造函數(shù)生成的對(duì)象就不能進(jìn)行判斷了。判斷是不是所有數(shù)據(jù)類(lèi)型中,只有不等于它本身判斷數(shù)組的方法除了上文提到的三種方法可判斷外,還有一個(gè)構(gòu)造函數(shù)自帶的方法可判斷。 數(shù)據(jù)類(lèi)型的分類(lèi) 要想判斷數(shù)據(jù)類(lèi)型,首先要知道數(shù)據(jù)類(lèi)型的分類(lèi)。數(shù)據(jù)類(lèi)型分為基本數(shù)據(jù)類(lèi)型和引用數(shù)據(jù)類(lèi)型。 基本數(shù)據(jù)類(lèi)型 基本數(shù)據(jù)類(lèi)型有 五 種,ES6中新加了第 六 種...
摘要:對(duì)象類(lèi)型常見(jiàn)的有,,,正則新增自己提供的樂(lè)行判斷如果不對(duì)對(duì)象做嚴(yán)格區(qū)分使用。的實(shí)現(xiàn)使用了原型繼承的表示左表達(dá)式,表示右表達(dá)式,它是用是否等于來(lái)判斷對(duì)象的類(lèi)型的。常見(jiàn)框架和庫(kù)的實(shí)數(shù)據(jù)類(lèi)型判斷測(cè)試這里將的實(shí)現(xiàn)原理抽取出來(lái),用原生實(shí)現(xiàn)。 JavaScript一共有六種數(shù)據(jù)類(lèi)型,分為原始類(lèi)型(又名基本類(lèi)型)和對(duì)象類(lèi)型(又名引用類(lèi)型) 原始類(lèi)型有五種,分別為number,string,boole...
摘要:的數(shù)據(jù)類(lèi)型,共有六種。通常,數(shù)值字符串布爾值這三種類(lèi)型,合稱(chēng)為原始類(lèi)型的值,即它們是最基本的數(shù)據(jù)類(lèi)型,不能再細(xì)分了。運(yùn)算符返回一個(gè)布爾值,表示某個(gè)對(duì)象是否為指定的構(gòu)造函數(shù)的實(shí)例。 以下內(nèi)容摘自阮一峰-JavaScript-標(biāo)準(zhǔn)參考教程 數(shù)據(jù)類(lèi)型 JavaScript 語(yǔ)言的每一個(gè)值,都屬于某一種數(shù)據(jù)類(lèi)型。JavaScript 的數(shù)據(jù)類(lèi)型,共有六種。(ES6 又新增了第七種 Symbo...
摘要:新增了第七種類(lèi)型的值數(shù)值字符串布爾值對(duì)象數(shù)據(jù)類(lèi)型判斷有三種方法,可以判斷一個(gè)值的類(lèi)型運(yùn)算符運(yùn)算符方法運(yùn)算符運(yùn)算符可以返回一個(gè)值的數(shù)據(jù)類(lèi)型。運(yùn)算符運(yùn)算符返回一個(gè)布爾值,表示對(duì)象是否為某個(gè)構(gòu)造函數(shù)的實(shí)例。 1.數(shù)據(jù)類(lèi)型 JavaScript一共有六種數(shù)據(jù)類(lèi)型。(ES6新增了第七種Symbol類(lèi)型的值) 數(shù)值(Number) 字符串(String) 布爾值(boolean) undefin...
摘要:操作符是最常見(jiàn)的類(lèi)型判斷方法,但其有局限性,只能判斷基本數(shù)據(jù)類(lèi)型,對(duì)于數(shù)組,日期等對(duì)象無(wú)法區(qū)分,統(tǒng)一顯示為。配合,改變方法執(zhí)行時(shí)的所在的環(huán)境,可以得到對(duì)象的精確類(lèi)型。 typeof操作符是最常見(jiàn)的類(lèi)型判斷方法,但其有局限性,只能判斷基本數(shù)據(jù)類(lèi)型,對(duì)于數(shù)組,日期等對(duì)象無(wú)法區(qū)分,統(tǒng)一顯示為object。 typeof []; //object typeof new Date(); //ob...
摘要:控制對(duì)象狀態(tài)的方法防止對(duì)象擴(kuò)展。判斷一個(gè)對(duì)象是否被凍結(jié)。返回當(dāng)前對(duì)象對(duì)應(yīng)的值。方法的作用是返回一個(gè)對(duì)象的字符串形式上面代碼表示,對(duì)于一個(gè)對(duì)象調(diào)用方法,會(huì)返回字符串用途通過(guò)自定義方法,可以讓對(duì)象在自動(dòng)類(lèi)型轉(zhuǎn)換時(shí),得到想要的字符串形式。 概述Object()Object 構(gòu)造函數(shù)Object 的靜態(tài)方法「本身的方法Object.keys(),Object.getOwnPropertyNam...
閱讀 3806·2021-10-13 09:39
閱讀 3835·2021-09-24 09:48
閱讀 1220·2021-09-01 10:30
閱讀 2553·2019-08-30 15:55
閱讀 1804·2019-08-29 16:39
閱讀 2326·2019-08-26 13:55
閱讀 3081·2019-08-26 12:23
閱讀 1665·2019-08-26 11:59