一篇文章搞懂instanceof方法

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('代码二');
    }
评论区
头像