您的位置:首页 > 其它

判断对象类型的方法

2017-01-06 01:53 302 查看
数组对象

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";
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息