1. 程式人生 > >檢測資料型別的幾種方式

檢測資料型別的幾種方式

javascript中有六種資料型別:string;boolean;Array;Object;null;undefined。如何檢測這些資料型別呢,總結方法如下: 方法一:採用typeof var fn = function(n){ console.log(n); } var str = ‘string’; var arr = [1,2,3]; var obj = { a:123, b:456 }; var num = 1; var b = true; var n = null; var u = undefined; //方法一使用typeof方法。 console.log(typeof str);//string console.log(typeof arr);//object console.log(typeof obj);//object console.log(typeof num);//number console.log(typeof b);//boolean console.log(typeof n);//null是一個空的物件 console.log(typeof u);//undefined console.log(typeof fn);//function 通過上面的檢測我們發現typeof檢測的Array和Object的返回型別都是Object,因此用typeof是無法檢測出來陣列和物件的,採用方法二和方法三則可以檢測出來。

方法二:instanceof var o = { ‘name’:‘lee’ }; var a = [‘reg’,‘blue’]; console.log(o instanceof Object);// true console.log(a instanceof Array);// true console.log(o instanceof Array);// false 注意:instaceof只可以用來判斷陣列和物件,不能判斷string和boolean型別,要判斷string和boolean型別需要採用方法四。 由於陣列也屬於物件因此我們使用instanceof判斷一個數組是否為物件的時候結果也會是true。如: console.log(a instanceof Object);//true。

var o = { ‘name’:‘lee’ }; var a = [‘reg’,‘blue’]; var getDataType = function(o){ if(o instanceof Array){ return ‘Array’ }else if( o instanceof Object ){ return ‘Object’; }else{ return ‘param is no object type’; } }; console.log(getDataType(o));//Object。 console.log(getDataType(a));//Array。 方法三:使用constructor方法
var o = { ‘name’:‘lee’ }; var a = [‘reg’,‘blue’]; console.log(o.constructor == Object);//true console.log(a.constructor == Array);//true

方法四:利用tostring()方法,這個方法是最佳的方案。 var o = { ‘name’:‘lee’ }; var a = [‘reg’,‘blue’]; function c(name,age){ this.name = name; this.age = age; } var c = new c(‘kingw’,‘27’); console.log(Object.prototype.toString.call(a));//[object Array] console.log(Object.prototype.toString.call(o));//[Object Object] console.log(Object.prototype.toString.call©);//[Object Object]

//封裝一個方法判斷陣列和物件 function isType(obj){ var type = Object.prototype.toString.call(obj); if(type == ‘[object Array]’){ return ‘Array’; }else if(type == ‘[object Object]’){ return “Object” }else{ return ‘param is no object type’; } } console.log(isType(o));//Object console.log(isType(a));//Array

方法五:利用jquery的.isPlainObject();.isPlainObject();.isArray(obj);$.isFunction(obj)進行判斷。