javascript 判斷數據類型的幾種方法
1、typeof 直接返回數據類型字段,可是沒法判斷數組、null、對象javascript
typeof 1 "number" typeof NaN "number" typeof "1" "string" typeof true "boolean" typeof undefined "undefined" typeof null "object" typeof [] "object" typeof {} "object"
其中 null, [], {}都返回 "object"java
2、instanceof 判斷某個實例是否是屬於原型數組
// 構造函數 function Fruit(name, color) { this.name = name; this.color = color; } var apple = new Fruit("apple", "red"); // (apple != null) apple instanceof Object // true apple instanceof Array // false
3、使用 Object.prototype.toString.call()判斷app
call()方法能夠改變this的指向,那麼把Object.prototype.toString()方法指向不一樣的數據類型上面,返回不一樣的結果函數
Object.prototype.toString.call(1) "[object Number]" Object.prototype.toString.call(NaN); "[object Number]" Object.prototype.toString.call("1"); "[object String]" Object.prototype.toString.call(true) "[object Boolean]" Object.prototype.toString.call(null) "[object Null]" Object.prototype.toString.call(undefined) "[object Undefined]" Object.prototype.toString.call(function a() {}); "[object Function]" Object.prototype.toString.call([]); "[object Array]" Object.prototype.toString.call({}); "[object Object]"
最後咱們能夠定義一個完美的判斷數據類型的方法 _typeof()ui
function _typeof(obj){ var s = Object.prototype.toString.call(obj); return s.match(/\[object (.*?)\]/)[1].toLowerCase(); }; _typeof([12,3,343]); "array" _typeof({name: 'zxc', age: 18}); "object" _typeof(1); "number" _typeof("1"); "string" _typeof(null); "null" _typeof(undefined); "undefined" _typeof(NaN); "number" _typeof(Date); "function" _typeof(new Date()); "date" _typeof(new RegExp()); "regexp"