通过typeof判断一个Array,Object,function的类型输出的都是function,why?

            let arr = [1,2,3,4]
        let obj = {
        name:'linda'
    }
    let fn = function(){
        console.log("function")
    }
    **console.log(typeof arr); //object **
    console.log(typeof obj)//object
    console.log(typeof fn)//function
         
          **  console.log(typeof Array); //function
    console.log(typeof Function)//function
    console.log(typeof Object)//function**

对象和函数是可以通过typeof来判断的
数组通过typeof也是object,所以数组一般情况下可以用instanceof来判断。
代码如下:

var e= {a:'1'};
console.log(typeof e); //object
var f= function(){};
console.log(typeof f);//function
var g=[1,2,3]
console.log(g instanceof Array)//true

或者通过一下方式:

var getObjType = obj => {
  var toString = Object.prototype.toString
  var map = {
    '[object Boolean]': 'boolean',
    '[object Number]': 'number',
    '[object String]': 'string',
    '[object Function]': 'function',
    '[object Array]': 'array',
    '[object Date]': 'date',
    '[object RegExp]': 'regExp',
    '[object Undefined]': 'undefined',
    '[object Null]': 'null',
    '[object Object]': 'object'
  }
  return map[toString.call(obj)]
}

有帮助麻烦点个采纳【本回答右上角】,谢谢~~

因为都是Function的实例


因为 typeof有缺陷 。它只能判断 基础类型 的数据 。

因为这两个本来就是构造函数,你说typeof为啥是function(函数)呢?