日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解JavaScript類型判斷的四種方法

瀏覽:248日期:2023-10-10 14:29:15

JavaScript有八種內置類型,除對象外,其他統稱為“基本類型”。

空值(null) 未定義(undefined) 布爾值(boolean) 數字(number) 字符串(string) 對象 (object) 符號(symbol, ES6中新增) 大整數(BigInt, ES2020 引入)

Symbol: 是ES6中引入的一種原始數據類型,表示獨一無二的值。

BigInt:是 ES2020 引入的一種新的數據類型,用來解決 JavaScript中數字只能到 53 個二進制位(JavaScript 所有數字都保存成 64 位浮點數,大于這個范圍的整數,無法精確表示的問題。具體可查看:新數據類型 — BigInt

一、typeof

typeof是一個操作符而不是函數,其右側跟一個一元表達式,并返回這個表達式的數據類型。返回的結果用該類型的字符串(全小寫字母)形式表示,包括以下 8 種:number、boolean、symbol、string、object、undefined、function 、bigInt等。

typeof原理是不同的對象在底層都表示為二進制,在Javascript中二進制前(低)三位存儲其類型信息。

000: 對象 010: 浮點數 100:字符串 110:布爾 1:整數

console.log(typeof undefined) // undefindconsole.log(typeof null) // objectconsole.log(typeof true) // booleanconsole.log(typeof 43) // numberconsole.log(typeof ’21’) // stringconsole.log(typeof {a:1}) // objectconsole.log(typeof Symbol()) // symbolconsole.log(typeof 123n) // bigintfunction a() {}console.log(typeof a) // functionvar date = new Date()var error = new Error()console.log(typeof date) // objectconsole.log(typeof error) // object

二、instanceof

instanceof 是用來判斷 A 是否為 B 的實例,表達式為:A instanceof B,如果 A 是 B 的實例,則返回 true,否則返回 false。 在這里需要特別注意的是:instanceof 檢測的是原型

通俗一些講,instanceof 用來比較一個對象是否為某一個構造函數的實例。注意,instanceof可以準確的判斷復雜數據類型,但是不能正確判斷基本數據類型

console.log(12 instanceof Number) // falseconsole.log(’22’ instanceof String) // falseconsole.log(true instanceof Boolean) // falseconsole.log(null instanceof Object) // falseconsole.log(undefined instanceof Object) // false console.log([] instanceof Array) // trueconsole.log({a: 1} instanceof Object) // trueconsole.log(json instanceof Object) // truefunction a() {}console.log(a instanceof Function) // trueconsole.log(new Date() instanceof Date) //trueconsole.log(reg instanceof RegExp) //trueconsole.log(error instanceof Error) // true

三、Object.prototype.toString.call()

toString() 是 Object 的原型方法,調用該方法,默認返回當前對象的 [[Class]] 。這是一個內部屬性,其格式為 [object Xxx] ,其中 Xxx 就是對象的類型。

對于 Object 對象,直接調用 toString() 就能返回 [object Object] 。而對于其他對象,則需要通過 call / apply 來調用才能返回正確的類型信息。

console.log(Object.prototype.toString.call(1)) // [object Number]console.log(Object.prototype.toString.call(1n)) // [object BigInt]console.log(Object.prototype.toString.call(’123’)) // [object String]console.log(Object.prototype.toString.call(true)) // [object Boolean]console.log(Object.prototype.toString.call(undefined)) // [object Undefined]console.log(Object.prototype.toString.call(null)) // [object Null]console.log(Object.prototype.toString.call({})) // [object Object]console.log(Object.prototype.toString.call([])) // [object Array]console.log(Object.prototype.toString.call(function a() {})) // [object Function]console.log(Object.prototype.toString.call(Symbol())) // [object Symbol]console.log(Object.prototype.toString.call(Math)) // [object Math]console.log(Object.prototype.toString.call(JSON)) // [object JSON]console.log(Object.prototype.toString.call(new Date())) // [object Date]console.log(Object.prototype.toString.call(new RegExp())) // [object RegExp]console.log(Object.prototype.toString.call(new Error)) // [object Error]console.log(Object.prototype.toString.call(window) // [object Window]console.log(Object.prototype.toString.call(document) // [object HTMLDocument]

使用該方法我們可以封裝一個isType方法來對類型進行判斷

let isType = (type, obj) => { return Object.prototype.toString.call(obj) === `[object ${type}]`}console.log(isType(’Number’, 12)) // trueconsole.log(isType(’Number’, ’12’)) // false

或者

let type = function(o) { let s = Object.prototype.toString.call(o); return s.match(/[object (.*?)]/)[1].toLowerCase();};console.log(type(12)) // numberconsole.log(type(’12’)) // stringconsole.log(type({})) // objectconsole.log(type([])) // array

四、constructor

constructor屬性,可以得知某個實例對象,到底是哪一個構造函數產生的。

constructor屬性表示原型對象與構造函數之間的關聯關系,如果修改了原型對象,一般會同時修改constructor屬性,防止引用的時候出錯。所以,修改原型對象時,一般要同時修改constructor屬性的指向。

console.log(’22’.constructor === String) // trueconsole.log(true.constructor === Boolean) // trueconsole.log([].constructor === Array)// trueconsole.log(document.constructor === HTMLDocument) // trueconsole.log(window.constructor === Window) // trueconsole.log(new Number(22).constructor === Number) // trueconsole.log(new Function().constructor === Function) // trueconsole.log((new Date()).constructor === Date) // trueconsole.log(new RegExp().constructor === RegExp) // trueconsole.log(new Error().constructor === Error) // true

注意:

1、null 和 undefined 是無效的對象,因此是不會有 constructor 存在的,這兩種類型的數據需要通過其他方式來判斷。

2、函數的 constructor 是不穩(wěn)定的,這個主要體現在自定義對象上,當開發(fā)者重寫 prototype 后,原有的 constructor 引用會丟失,constructor 會默認為 Object

以上就是JavaScript類型判斷的四種方法的詳細內容,更多關于JavaScript類型判斷的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩一区电影| 午夜国产精品视频免费体验区| 99国产精品| 蜜桃视频在线观看一区| 一区二区三区网站| 不卡av一区二区| 欧美国产91| 日韩中文字幕1| 午夜亚洲福利| 国产精品最新自拍| 国产精品香蕉| 精品高清久久| 国产在线视频欧美一区| 亚洲精品中文字幕乱码| 香蕉人人精品| 亚洲理论在线| 国产精品一线| 亚洲特色特黄| 日韩精品一区二区三区av| 久久爱www成人| 成人午夜网址| 日韩视频精品在线观看| 日韩美女国产精品| 国产成人免费av一区二区午夜| 亚洲无线一线二线三线区别av| 日本在线视频一区二区| 日韩一区三区| 色8久久久久| 一区二区三区视频免费观看| 亚洲最大av| 精品少妇一区| 日韩不卡在线| 国产精品三p一区二区| 欧美午夜精彩| 国产精品久久久免费| 日韩高清欧美| 欧美在线黄色| 一区在线免费| 国产成人免费av一区二区午夜| 亚洲精品免费观看| 91精品婷婷色在线观看| 麻豆精品在线观看| 日本一区中文字幕| 国产综合亚洲精品一区二| 国产亚洲一区二区三区啪| 中文一区在线| 在线日韩视频| 韩国三级一区| 欧美一级鲁丝片| 美女精品视频在线| 伊人www22综合色| 黄色不卡一区| 欧美中文字幕一区二区| 中文字幕人成乱码在线观看 | 国产模特精品视频久久久久| 成人国产精品久久| 欧美国产视频| 国产精品igao视频网网址不卡日韩| 亚洲欧美专区| 奇米狠狠一区二区三区| 亚洲aa在线| 亚洲一区网站| 中文字幕日韩欧美精品高清在线| 欧美专区18| 视频一区视频二区中文| 免费人成黄页网站在线一区二区| 亚洲欧美日本国产专区一区| 亚洲毛片视频| 久久99蜜桃| 视频二区不卡| 风间由美中文字幕在线看视频国产欧美| 综合在线一区| 午夜性色一区二区三区免费视频| 免费观看在线综合色| 亚洲资源网站| 久久99久久久精品欧美| 国产伦精品一区二区三区视频| 国产精东传媒成人av电影| 久久女人天堂| 香蕉精品久久| 亚洲精品国产日韩| 精品久久电影| 免费精品视频| 久久精品亚洲一区二区| 欧美午夜精品一区二区三区电影| 日韩在线一区二区| 久久女人天堂| 免费在线看一区| 97人人精品| 亚洲精品欧美| 黑森林国产精品av| 国产精品88久久久久久| 欧美午夜三级| 在线一区欧美| 97精品国产一区二区三区| 国产视频一区三区| 国产福利电影在线播放| 日本一区二区三区视频在线看| av综合电影网站| 日本欧美在线| 99re国产精品| 亚洲日本网址| 欧美激情福利| 911亚洲精品| 亚洲综合二区| 偷拍精品精品一区二区三区| 中文精品在线| 欧美综合另类| 中文字幕在线免费观看视频| 国产亚洲欧美日韩精品一区二区三区| 欧美搞黄网站| 久久久久久久久久久妇女| 麻豆成人91精品二区三区| 亚洲一区二区小说| 不卡中文字幕| 国产综合亚洲精品一区二| 都市激情国产精品| 久久不见久久见中文字幕免费 | 一区二区日韩免费看| 日韩欧美一区二区三区在线观看| 久久99免费视频| 国产精品二区影院| 欧美激情网址| 精品中文在线| 国产精品99在线观看| 丰满少妇一区| 国产综合色区在线观看| 国产超碰精品| 免费不卡中文字幕在线| 国产一区清纯| 亚洲精品网址| 影音先锋久久精品| 视频一区二区三区中文字幕| 欧美搞黄网站| 99在线|亚洲一区二区| 亚洲资源av| 日韩精品免费视频人成| 日本欧美韩国一区三区| 久久国产尿小便嘘嘘| 国产剧情在线观看一区| 国产免费久久| 日本久久黄色| 蜜桃成人av| 日韩影院免费视频| 欧美日韩 国产精品| 国产成人免费av一区二区午夜| 在线一区欧美| 欧美日韩亚洲三区| 日韩精品视频中文字幕| 欧美黑人做爰爽爽爽| 日韩中文在线电影| 亚洲视频电影在线| 日韩成人免费| 亚洲伊人精品酒店| 久久亚洲人体| 亚洲中字黄色| 国产精品极品国产中出| 欧美男人天堂| 最新亚洲国产| 国产精品久久观看| 尹人成人综合网| 国产精品一在线观看| 欧美搞黄网站| 亚洲人妖在线| 亚洲天堂资源| 日韩va欧美va亚洲va久久| 中文字幕在线视频久| 日本视频在线一区| 亚洲国产成人精品女人| 丰满少妇一区| 69堂免费精品视频在线播放| 精品在线99| 久久女人天堂| 91嫩草精品| 国产农村妇女精品一二区| 国产亚洲一区| 视频在线观看国产精品| 99视频精品全部免费在线视频| 日韩精品一区二区三区中文字幕| 久久免费国产| jizzjizz中国精品麻豆| 国产精品宾馆| 国产精品自拍区| 日韩av中文字幕一区| 男女男精品视频网| 99成人在线| 欧美不卡在线| 不卡在线一区| 久久久影院免费| 色偷偷色偷偷色偷偷在线视频| 国产欧美日韩免费观看| 亚洲免费专区| 日韩毛片网站| japanese国产精品| 亚洲精品97| 亚洲天堂免费| 日韩成人精品一区二区三区 | 国产一区亚洲| 宅男在线一区| 视频在线观看一区|