谈一下instanceof、Array.isArray、Obje

2022-11-25  本文已影响0人  小汤猿
1.instanceof

使用instanceof判断数组,instanceof会判断这个对象的原型链上是否会找到对应的Array的原型,找到则返回true,否则返回false;

   [] instanceof Arrary      // true

缺点:instanceof 只能判断对象,原始类型不可以, 并且所有对象类型 instanceof Object 都返回true


instanceof.png
2. Array.isArray

当检测Array实例时,Array.isArray 优于 instanceof
其内部原理是基于Object.prototype.toString.call()

    Array.isArray = function(value) {
      return Object.prototype.toString.call(value) === '[object Array]';
    }
3. Object.prototype.toString.call()

任何数据类型的原型最终指向Object, Object的最终指向null。
Object有一个内置方法toString, 通过call()方法可以判断任何数据类型, symbol也可以

let s = Symbol(2)
Object.prototype.toString.call(s)  // "[object Symbol]"
上一篇下一篇

猜你喜欢

热点阅读