Long
文章8
标签5
分类4
判断数据类型的方法

判断数据类型的方法

JS中数据类型的判断 typeof instanceof constructor Object.prototype.toString.call()

1. typeof关键字


图片


  • 使用typeof关键字判断数组类型不够准确,数组类型判断得使用 Array.isArray() 方法

2. instanceof关键字


图片


  • obj instanceof Object,左边操作数obj为对象(如果不小心写成基本类型 比如数字啥的,就会返回false)右边操作数Object为函数对象或者是函数构造器,否则抛出TypeError。
  • 实质就是:instanceof操作符判断左操作数对象的原型链上是否有右边这个构造函数的prototype属性,也就是 说指定对象是否是某个构造函数的实例,最后返回布尔值,这个对整个原型链上的对象都是有效的,由于* instanceof对整个原型链上的对象都有效,因此同一个实例对象,可能会对多个构造函数都返回true!

3. constructor


图片


fubction Fruit () {

}

Fruit.prototype= new Array()

var apple = new Fruit()

console.log('Fruit.constructor', Fruit.constructor)
// Fruit.constructor ƒ Function() { [native code] }
console.log('apple.constructor', apple.constructor)
// apple.constructor ƒ Array() { [native code] }
  • 用costructor来判断判断 null 和 undefined 会报错。若再去改变对象的constructor,也显得不靠谱了

4. Object.prototype.toString.call()


图片


  • 判断 null undefined 也不会报错,即使改变了constructor没问题了。
本文作者:Long
本文链接:https://liuck1108.github.io/2021/07/22/%E5%88%A4%E6%96%AD%E6%95%B0%E6%8D%AE%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%96%B9%E6%B3%95/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可