国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

js 數據類型判斷的方法

瀏覽:115日期:2024-04-11 08:31:06

typeof

一般用于判斷基本數據類型,用于判斷引用數據類型和null時會發生意外的錯誤

typeof 1 // numbertypeof ’1’ // stringtypeof true // booleantypeof Symbol(’1’) // symboltypeof undefined // undefinedtypeof function(){} // functiontypeof { a: 1 } // objecttypeof [1, 2, 3] // object 這里會判斷異常,建議使用Array.isArray區分數組和對象//以下也會判斷異常typeof new Boolean(true) === ’object’;typeof new Number(1) === ’object’;typeof new String(’abc’) === ’object’;//最后來看nulltypeof null // object

來看下typeof的原理:不同的對象在底層都表示為二進制,在js里二進制前三位都為0的會 被判斷為object類型,null的二進制表示全0(對應機器碼的null指針,一般為全0),所以會被判斷成object類型。

instanceof

它的主要作用是用來判斷一個實例是否屬于某種類型,用于判斷對象很合適

語法:object instanceof constructor object 某個實例對象 constructor 某個構造函數’abc’ instanceof String //false 檢查原型鏈會返回undefinednew String(’abc’) instanceof String //truenew Boolean(true) instanceof Boolean // true new Number(1) instanceof Number // true順便做一下簡單實現function new_instance_of(leftVaule, rightVaule) { let leftProto = leftVaule.__proto__; // 取左表達式的__proto__值 let rightPrototype = rightVaule.prototype; // 取右表達式的 prototype 值 while (true) { if (leftProto === null) { return false; } if (rightPrototype === rightProto) { return true; } leftProto = leftProto.__proto__ }}

constructor

根據數據類型的構造函數返回類型,但是由于null和undefined沒有構造函數故無法判斷

’’.constructor == String //true new Number(1).constructor == Number //true new Function().constructor == Function //true true.constructor == Boolean //truenew Date().constructor == Date //true

Object.prototype.toString.call()

可以通過 toString() 來獲取每個對象的類型。為了每個對象都能通過Object.prototype.toString() 來檢測,需要以 Function.prototype.call() 或者 Function.prototype.apply() 的形式來調用,傳遞要檢查的對象作為第一個參數。

var toString = Object.prototype.toString;toString.call(new Date); // [object Date]toString.call(new String); // [object String]toString.call(Math); // [object Math]toString.call(undefined); // [object Undefined]toString.call(null); // [object Null]

lodash.getTag和lodash.baseGetTag

baseGetTag使用Object.prototype.toString.call和Symbol.toStringTag來判斷屬性的類型Symbol.toStringTag只適合做特定的類型判斷

js 數據類型判斷的方法

//lodash.baseGetTag部分重要源碼//如果值是undefined和null返回對應tag if (value == null) { return value === undefined ? ’[object Undefined]’ : ’[object Null]’ } // 如果不支持Symbol或者value值上面沒有Symbol.toStringTag屬性, //直接返回Object.prototype.toString調用后的值 if (!(symToStringTag && symToStringTag in Object(value))) { return toString.call(value) }

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

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 91看片淫黄大片欧美看国产片 | 精品国产欧美精品v | 欧美人成片免费看视频不卡 | 中文字幕在线观看日韩 | 国产精品久久久久久小说 | 久久精品香蕉视频 | 欧美三级黄 | 免费看孕妇毛片全部播放 | 国产精品久久久久久久久 | 在线观看免费为成年视频 | 国产黄三级三·级三级 | 国内黄色一级精品 | 亚洲精品久久久久久久福利 | 久久午夜精品视频 | 国产欧美亚洲精品 | 中文字幕在线欧美 | 欧美一级特毛片 | 国产精品三| 亚洲 欧美 激情 另类 自拍 | 琪琪午夜伦埋大全影院 | 欧美一级片手机在线观看 | 欧美与黑人午夜性猛交久久久 | 99热碰| 日韩在线视频观看 | 欧美精品一区二区三区免费 | 毛片免费在线观看网址 | 欧美极品video粗暴 | 德国女人一级毛片免费 | 美女扒开腿让男人桶尿口 | 黄网站在线播放视频免费观看 | 久久免费在线视频 | 国产午夜精品理论片小yo奈 | 一本色综合 | 国产丝袜美腿高跟白浆 | 亚洲一级毛片欧美一级说乱 | 免费观看成人www精品视频在线 | 亚洲欧美精品中字久久99 | 日韩区在线观看 | 在线视频观看免费视频18 | 日本精品1在线区 | 欧美在线综合 |