判断一个对象是数组还是对象

一、typeof判断数据类型(判断数组跟对象都返回object)

	console.log(typeof null);//object
	console.log(typeof function(){
		return 1;
	});//function
	console.log(typeof '小A');//string
	console.log(typeof 1);//number
	console.log(typeof a);//undefined
	console.log(typeof undefined);//undefined
	console.log(typeof []);//object
	console.log(typeof NaN);//number
	console.log(typeof {});//object

二、instanceof判断对象的原型链是否是指向构造函数的prototype

var arr = [1, 2, 3, 1];
console.log(arr instanceof Array);//true
//console.log(arr.constructor === Array); //true

三、对象的constructor属性

var arr = [1, 2, 3, 1];
console.log(arr.constructor === Array); //true

四、Object.prototype.toString.call(arr)
利用对象的toString可以准确判断是什么类型,call()改变this指向。

console.log(Object.prototype.toString.call("jerry"));//[object String]
console.log(Object.prototype.toString.call(12));//[object Number]
console.log(Object.prototype.toString.call(true));//[object Boolean]
console.log(Object.prototype.toString.call(undefined));//[object Undefined]
console.log(Object.prototype.toString.call(null));//[object Null]
console.log(Object.prototype.toString.call({name: "jerry"}));//[object Object]
console.log(Object.prototype.toString.call(function(){}));//[object Function]
console.log(Object.prototype.toString.call([]));//[object Array]
console.log(Object.prototype.toString.call(new Date));//[object Date]
console.log(Object.prototype.toString.call(/\d/));//[object RegExp]
console.log(Object.prototype.toString.call(new Person));//[object Object]    

五、es6方法 - Array.isArray()
Array.isArray([]); //true

发布了5 篇原创文章 · 获赞 0 · 访问量 451

猜你喜欢

转载自blog.csdn.net/weixin_43743804/article/details/102626131