(1)方法一:
在编写程序时,我们经常需要
获得一个变量的数据类型
,大多数时候, typeof 运算符就能够告诉我们答案。
var num = 1; // typeof(num) == 'number'
var str = 'hello'; // typeof(str) == 'string'
var boo = true; // typeof(boo) == 'boolean'
var obj = {};// typeof(obj) == 'object'
但是 如果变量是一个数组呢?
Object.prototype.toString.call()
var arr = []; // typeof(arr) == 'object'
我们都知道, 在 JavaScript 里面,数组也是一种对象,对象也是一种数据类型。 所以,在我们试图使用 typeof 运算符获得 arr 这个变量的类型时,只能得到 ‘object’ 这个结果。
那么,怎样判断这个对象是不是数组呢?
var arr = [];
isArray(arr); // true
function isArray(arg){
return Object.prototype.toString.call(arg) === '[object Array]';
}
这里我们调用了 Object 对象原型的 toString 方法,如果对象是数组,则该函数返回’[object Array]‘。 这种方法也可以用来获得任何其他变量的类型,不管变量的实际类型是什么,返回值都是以 object 开头,因为 Number,String,Boolean,Array,Function 都继承自 JavaScript 内置的 Object 对象 ,而每一个变量,都是与其类型相应的对象的一个实例。这种方法的使用示例如下:
12345678910111213/* Object.prototype.toString.call(arg); // arg 可以是任何变量,不管变量的实际类型是什么,返回值都是以 object 开头。 */
var num = 1;
alert(Object.prototype.toString.call(num)); // [object Number]
var str = 'hudidit.com';
alert(Object.prototype.toString.call(str)); // [object String]
var boo = true;
alert(Object.prototype.toString.call(boo)); // [object Boolean]
var fun = function(){};
alert(Object.prototype.toString.call(fun)); // [object Function]
var obj = {};
alert(Object.prototype.toString.call(obj)); // [object Object]
var arr = [];
alert(Object.prototype.toString.call(arr)); // [object Array]
instanceof
12var arr = [];
alert(arr instanceof Array); // true
var num = 1; // typeof(num) == 'number'
var str = 'hello'; // typeof(str) == 'string'
var boo = true; // typeof(boo) == 'boolean'
var obj = {};// typeof(obj) == 'object'
但是 如果变量是一个数组呢?
Object.prototype.toString.call()
var arr = []; // typeof(arr) == 'object'
我们都知道, 在 JavaScript 里面,数组也是一种对象,对象也是一种数据类型。 所以,在我们试图使用 typeof 运算符获得 arr 这个变量的类型时,只能得到 ‘object’ 这个结果。
那么,怎样判断这个对象是不是数组呢?
var arr = [];
isArray(arr); // true
function isArray(arg){
return Object.prototype.toString.call(arg) === '[object Array]';
}
这里我们调用了 Object 对象原型的 toString 方法,如果对象是数组,则该函数返回’[object Array]‘。 这种方法也可以用来获得任何其他变量的类型,不管变量的实际类型是什么,返回值都是以 object 开头,因为 Number,String,Boolean,Array,Function 都继承自 JavaScript 内置的 Object 对象 ,而每一个变量,都是与其类型相应的对象的一个实例。这种方法的使用示例如下:
12345678910111213/* Object.prototype.toString.call(arg); // arg 可以是任何变量,不管变量的实际类型是什么,返回值都是以 object 开头。 */
var num = 1;
alert(Object.prototype.toString.call(num)); // [object Number]
var str = 'hudidit.com';
alert(Object.prototype.toString.call(str)); // [object String]
var boo = true;
alert(Object.prototype.toString.call(boo)); // [object Boolean]
var fun = function(){};
alert(Object.prototype.toString.call(fun)); // [object Function]
var obj = {};
alert(Object.prototype.toString.call(obj)); // [object Object]
var arr = [];
alert(Object.prototype.toString.call(arr)); // [object Array]
instanceof
12var arr = [];
alert(arr instanceof Array); // true
(2)方法二
instanceof 运算符用于判断一个变量是否为一个对象的实例。在这里,arr 是 Array 对象的一个实例,所以 arr instanceof Array 会返回 true ,从而我们知道变量 arr 是一个数组。
instanceof 运算符用于判断一个变量是否为一个对象的实例。在这里,arr 是 Array 对象的一个实例,所以 arr instanceof Array 会返回 true ,从而我们知道变量 arr 是一个数组。
(3)方法三
jQuery.isArray()
别忘了 jQuery !
如果你恰好在项目中使用 jQuery ,那么直接使用 jQuery 内置的用于判断对象是否为数组的函数 jQuery.isArray() 就可以了,简洁而有力!
jQuery.isArray()
别忘了 jQuery !
如果你恰好在项目中使用 jQuery ,那么直接使用 jQuery 内置的用于判断对象是否为数组的函数 jQuery.isArray() 就可以了,简洁而有力!