判断对象类型的方法

来源:互联网 发布:mac地址获取工具 编辑:程序博客网 时间:2024/06/05 20:56

数组对象

var arr=[{"name":"ls","age":12},{"name":"jason","age":22},12];

1、 typeof 判断

console.log( typeof arr)console.log( typeof arr=='object')//typeof的一个不好的地方就是它会把Array还有用户自定义函数都返回为object

2、构造函数指针 判断

console.log(arr.constructor.name)console.log(arr.constructor.name==Array)console.log(arr.constructor.name=='Array')//打印构造函数指针console.log(a.constructor)function Array() { [native code] }//打印Array函数console.log(Array)function Array() { [native code] }//两个完全一致的函数作比较console.log(a.constructor==Array)true

3、instranceof 判断

console.log( arr instanceof Array)//利用typeof和constructor进行严格判断 console.log((typeof arr=="object") && (arr.constructor==Array)) console.log((typeof arr=="object") && (arr.constructor.name=='Array'))

4、原型函数 判断

console.log(Object.prototype.toString.call(arr));//封装改进后的函数console.log(type(arr));var class2type = {},     //用于记录[object class]样式  objs = "Boolean Number String Function Array Date RegExp Null Undefined".split(" ");  for (var i = 0, l = objs.length; i < l; i++) {       class2type[ "[object " + objs[i] + "]" ] = objs[i].toLowerCase();  }  function type(obj) {       return class2type[ Object.prototype.toString.call(obj) ] || "object";  } 
0 0