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