typeof 和 instanceof 检测数据类型

原始类型(基本类型):

    ES5( Undfined、Null、String、Boolean、Number ) 

    ES6( BigInt、symbol )

引用类型(复杂类型):

    Object(Date、Array、Function、Object)

typeof  检测时:

  基本数据类型检测:

     console.log(typeof undefined); // undefined

     console.log(typeof '112'); // string

     console.log(typeof 123); // number

     console.log(typeof true); // boolean

     console.log(typeof null); // object

    引用数据类型检测:

        let fun = function () { return 1};

        console.log("函数:", typeof fun); // function 具体原因是因为在js中定义时,会在方法上使用call方法,有call就是function,没有就是objetc;

        let arr = [1,2,3]

        console.log('数组:', typeof arr); // object

        let date = new Date();

        console.log('时间对象:',  typof date); // object 因为通过new实例出来的就是一个对象

总结:少个null, 多个function

instanceof 检测结果:boolean( true || false

用法就是 :A instanceof B  (意思就是:对象A是否由B对象实例化出来的)

instanceof 通过原型链查找的,有点像 儿子=》爸爸=》爷爷 这种关系!!!

例子:

    console.log([] instanceof Object); // true

用来区分类型为 object 具体属于哪一种Object.prototype.toString.call();

构造函数--实例化出来的对象,最好使用 instanceof 来检测;如果使用 Object.prototype.toString.call() 进行检测的话,则没办法判断到底是实例后的对象还是原生Object对象。

区分object

就这样子!

你可能感兴趣的:(typeof 和 instanceof 检测数据类型)