正确判断js数据类型 总结记录
生活随笔
收集整理的這篇文章主要介紹了
正确判断js数据类型 总结记录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
正確判斷js數據類型 總結記錄
判斷js中的數據類型有一下幾種方法:typeof、instanceof、 constructor、 prototype、 三方庫。
js六大數據類型
number: 數字,整數、浮點數等等, string: 單引號或者雙引號來說明, Boolean: 返回true和false,這兩個值不一定對應1和0 object: 對象,可以執行new操作符后跟要創建的對象類型的名稱來創建。 null: 只有一個值得數據類型,邏輯上講,null值表示一個空對象指針。 undefined:未定義,使用var聲明變量但未對其初始化時,變量的值就是undefined。1、typeof
在實際的項目應用中,typeof只有兩個用途,就是檢測一個元素是否為undefined,或者是否為function。原因如下:
JavaScript Garden整理出來了如下表格
2、instanceof
var a = [1,2,3]; var b = new Date(); var c = function(){};alert(a instanceof Array) ---------------> true alert(b instanceof Date) alert(c instanceof Function) ------------> true alert(c instanceof function) ------------> false3、constructor
var a = [1,2,3]; var b = new Date(); var c = function(){};alert(a.constructor === Array) ----------> true alert(b.constructor === Date) -----------> true alert(c.constructor === Function) -------> true注:
? ? ? 使用instaceof和construcor,被判斷的引用類型(Object Array)必須是在當前頁面聲明的!比如,一個頁面(父頁面)有一個框架,框架中引用了一個頁面(子頁面),在子頁面中聲明了一個array,并將其賦值給父頁面的一個變量,這時判斷該變量,Array ==object.constructor;會返回false;
原因:
1、array屬于引用型數據,在傳遞過程中,僅僅是引用地址的傳遞。
2、每個頁面的Array原生對象所引用的地址是不一樣的,在子頁面聲明的array,所對應的構造函數,是子頁面的Array對象;父頁面來進行判斷,使用的Array并不等于子頁面的Array。
4、Object.prototype.toString(通用)
Object.prototype.toString.call() var toString = Object.prototype.toString;toString.call(undefined); -------------> [object Undefined] toString.call(null); -------------> [object Null] toString.call(new Date); -------------> [object Date] toString.call(new String); -------------> [object String] toString.call(Math); -------------> [object Math]jQuery.type()源碼
var class2type = {} ; "Boolean Number String Function Array Date RegExp Object Error".split(" ").forEach(function(e,i){class2type[ "[object " e "]" ] = e.toLowerCase(); }) ;function _typeof(obj){if ( obj == null ){return String( obj );}return typeof obj === "object" || typeof obj === "function" ?class2type[ class2type.toString.call(obj) ] || "object" :typeof obj; }注:數組還可以用 Array.isArray(); 或者根據其具有的方法去判斷。不再細述
原文地址:https://segmentfault.com/a/1190000016940601
更多專業前端知識,請上 【猿2048】www.mk2048.com
總結
以上是生活随笔為你收集整理的正确判断js数据类型 总结记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原生JS封装ajax以及request
- 下一篇: react-native页面间传递数据的