你不重视的JS基础 - typeof和instanceof的区别

136 阅读1分钟

instanceof

instanceof运算符用来返回一个对象在其原型链中是否存在一个构造函数的prototype属性

object instanceof constractor

instanceof用来检测constructor.prototype是否存在于object的原型链上,其返回值是true / false。

typeof

typeof运算符返回一个字符串,指未经计算的操作数的类型:String、Boolean、Undefined、Null、Number、Symbel

两者区别

instanceof只能用来判断对象和函数,不能用来判断数字和字符串等

typeof不能用于判断是否为数组,因为都会返回Object,判断数组可以用下面几种方式:

  1. constructor

    arr.prototype.constructor = Array

  2. instanceof

    arr instanceof Array

  3. Array.isArray

    Array.isArray(arr)

  4. Object.prototype.toString.call()

    Object.prototype.toString.call() // object/array