instanceof
instanceof的作用是判断对象的具体类型,返回的是一个布尔值。如果是指定类型返回 true,否则返回 false。
let obj = {
name: '刘宇阳'
}
let arr = ['刘', '宇', '阳'];
console.log(obj instanceof Object); //true
console.log(arr instanceof Array); //true
注意点
数组本质上也属于对象,所谓万物皆对象
//obj是一个对象,但不是个数组所以返回false
console.log(obj instanceof Array); //false
//arr是一个数组,但也属于对象所以返回true
console.log(arr instanceof Array); //true
//对象=Object,数组=Object
console.log(obj instanceof Object); //true
console.log(arr instanceof Object); //true
由此可以得出结论,数组属于Array,也属于Object。而对象仅仅只是个对象。
所以遇到以下这种情况,需要筛选数组、对象必须先判断数组其次判断对象。
let a = {};
if (a instanceof Array) {
console.log('代码一');
} else if (a instanceof Object) {
console.log('代码二'); //执行这句话
}
因为如果先判断数组则不管是对象还是数组结果都是true
数组是Array,所以输出代码一
let b = [];
if (b instanceof Array) {
console.log('代码一'); //执行这句话
} else if (b instanceof Object) {
console.log('代码二');
}
数组也属于Object,所以还是输出代码一
let c = [];
if (c instanceof Object) {
console.log('代码一'); //还是执行这句话
} else if (c instanceof Array) {
console.log('代码二');
}
名称:浩瀚星河
链接: https://pioneerpan.cn/
描述:编织宇宙之码,悠游尘世之境
头像: https://pioneerpan.cn/usr/uploads/avatar.png