typeof 运算符返回一个用来表示表达式的数据类型的字符串, 一般只能返回如下几个结果:“number”、“string”、“boolean”、“object”、“function” 和 “undefined”。我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!=“undefined”);对象,数组和null返回结果都为object,这正是 typeof 的局限性。
那么进入正题,怎么区分对象与数组的类型?
1.instanceof
instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。
var a=new Array();
alert(a instanceof Array); // true,
alert(a instanceof Object) //也会返回 true;
这是因为 Array 是 object 的子类。
2.对象的constructor属性
var arr = [1,2,3,1];
alert(arr.constructor === Array); // true
3.利用toString()方法
Object.prototype.toString.call({}) // [object Object]
Object.prototype.toString.call([]) // [object Array]
4.es6的方法——Array.isArray()
Array.isArray([]) // true
Array.isArray({}) // false
5.length属性
typeof a === 'object' && !isNaN(a.length)//true
typeof b === 'object' && !isNaN(b.length)//false
1263



被折叠的 条评论
为什么被折叠?



