判断数组还是对象方法

在面试契约锁时,问到了如何判断数组还是对象,只回答了ES6中的isArray()方法,当面试官继续提示我原型链上的方法时,我也想不起来,记录一下。

1.typeof

typeof可以判断基本数据类型,但是引用数据类型其实都是object,所以是判断不出数组还是对象的

let num=1;
console.log(typeof num)       //number
let str="222";
console.log(typeof str)       //string
console.log(typeof null)      //object
console.log(typeof undefined) //undefined
console.log(typeof NaN)       //number

2.使用Array.isArray()

let obj={}
let arr=[]
console.log(Array.isArray(obj)) //false
console.log(Array.isArray(arr)) //true

3.判断构造函数

通过原型链可知,函数对象都有prototype指向一个显示原型,显示原型上有一个constructor可以指回函数。

obj 是new Object函数构造出来的

arr是new Array函数构造出来的

let obj={}
let arr=[]
console.log(obj.constructor()) // {}
console.log(arr.constructor()) //[]

4.通过实例instanceof可以判断是不是实例对象

let obj={}
let arr=[]
console.log(obj instanceof Array)  //false
console.log(arr instanceof Array)  //true
console.log(obj instanceof Object) //true
console.log(arr instanceof Object) //true

5.Object.prototype.toString.call()

let obj={}
let arr=[]
console.log(Object.prototype.toString.call(obj))  //[object Object]
console.log(Object.prototype.toString.call(arr))  //[object Array]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值