javascript
Javascript判断object还是list/array的类型(包含javascript的数据类型研究)
前提:先研究javascript中的變量有幾種,參考:
http://www.w3school.com.cn/js/js_datatypes.asp
http://glzaction.iteye.com/blog/1285147
測試1:
typeof關(guān)鍵字
var obj= {test:'test'};
typeof obj;//輸出object
var list = [{test:'test'}];
typeof list;//輸出object
var str = 'str';
typeof str;//輸出string
var i = 1;
typeof i;//輸出number
var b = false;
typeof b;//輸出boolean
var n = null;
typeof n;//輸出object
n==null;//輸出true
var n;
typeof n;//輸出undefined
直接輸出一個沒有定義的變量
typeof a;//輸出undefined
function func(){}
typeof func;//輸出function
以上可以發(fā)現(xiàn),只能判斷l(xiāng)ist和obj同時輸出了object
在判斷某個對象是否為指定類型時,可以用==或者===,比如:typeof func === 'function'或者typeof func == 'function'
測試2:
Object.prototype.toString.call( obj )
var obj= {test:'test'};
Object.prototype.toString.call( obj );//輸出[object Object]
var list = [{test:'test'}];
Object.prototype.toString.call( list );//輸出[object Array]
var str = 'str';
Object.prototype.toString.call( str );//輸出[object String]
var i = 1;
Object.prototype.toString.call( i );//輸出[object Number]
var b = false;
Object.prototype.toString.call( b );//輸出[object Boolean]
var n = null;
Object.prototype.toString.call( n );//輸出[object Null]
n==null;//輸出true
var n;
Object.prototype.toString.call( n );//輸出[object Undefined]
直接輸出一個沒有定義的變量
Object.prototype.toString.call( a );//輸出:Uncaught ReferenceError: n1 is not defined,會報異常,阻止執(zhí)行下面
function func(){}
Object.prototype.toString.call( function );//輸出[object Function]
這個方法可以很明確的直到obj和list的類型
判斷時使用Object.prototype.toString.call( list )==='[object Array]'或者Object.prototype.toString.call( list )=='[object Array]',==或者===一樣的效果。
測試3:
如果使用jquery,可以使用$.isArray(obj)的方法,如下:
var a = ["A", "AA", "AAA"]; if($.isArray(a)) {console.log("a is an array!"); } else {console.log("a is not an array!"); }但是測試發(fā)現(xiàn),只能判斷數(shù)組,沒有判斷對象的方法。
測試4:
instanceof 關(guān)鍵字
var obj= {test:'test'};
var str = 'str';
var i = 1;
var b = false;
var list = [{test:'test'}];
var n = null;
function func(){}
通過測試,使用如:obj instanceof Object的形式,只能是判斷兩種類型Object和Array,其中Boolean、Number、String可以判斷,但是會返回false,如上面i和b變量;如果判斷為null或者undefind會報Uncaught TypeError: Right-hand side of 'instanceof' is not an object這樣的錯誤。
測試5:
直接通過Array.isArray(obj),javascript的原生方法,不過這個只能判斷數(shù)組。
測試5:
通過obj.constructor關(guān)鍵字
var obj= {test:'test'};
var str = 'str';
var i = 1;
var b = false;
var list = [{test:'test'}];
var n = null;
function func(){}
通過測試,使用如:str == String.constructor的形式,只能判斷Object、Array、String、Boolean、Number,對于null、function、undefind這些會報異常。
?
參考:
http://stackoverflow.com/questions/4775722/check-if-object-is-array
http://www.jb51.net/article/21945.htm
總結(jié)
以上是生活随笔為你收集整理的Javascript判断object还是list/array的类型(包含javascript的数据类型研究)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 安装python_Linux
- 下一篇: http 测试工具_20+最好的开源自动