JavaScript判断变量是否为某种类型

本文最后更新于:2022年10月12日 上午

对象、数组

判断是否为对象

const obj = {};

  1. Object.prototype.toString.call(obj) === '[object Object]'

    [object Object]中第一个o小写

  2. obj.constructor === Object

  3. obj instanceof Object(不可行)

    数组和函数也会返回true

  4. typeof obj === Object(不可行)

    存在特殊情况, typeof一般用于判断原始值

    1
    2
    3
    4
    5
    typeof undefined //'undefined'
    typeof null //'object'
    typeof function() {} //'function'
    typeof {} //'object'
    typeof [] //'object'
  5. $.isPlainObject(obj)

    判断指定参数是否为一个纯粹的对象(指该对象是通过{}new Object()创建的)

判断是否为数组

const arr = [];

  1. Object.prototype.toString.call(arr) == '[object Array]'

  2. typeof obj == 'object' && arr.constructor === Array

  3. obj instanceof Array
  4. typeof arr //'object'(不可行)
  5. Array.isArray()

使用instanceof方法和constructor属性判断时,如遇到跨框架(iframe),在不同的框架中,创建的数组不共享其prototype属性,无法准确判断


JavaScript判断变量是否为某种类型
https://elcfin.github.io/2021/11/09/判断是否为对象-数组/
作者
Elcfin
发布于
2021年11月9日
许可协议