js判断类型

在JavaScript中,判断数据类型可以通过以下几种方法:

  1. typeof 运算符

typeof 是一个一元操作符,用于判断一个表达式的数据类型。它可以返回以下基本类型:

  • number

  • string

  • boolean

  • symbol

  • undefined

  • object

  • function

需要注意的是,typeofnull 和数组([])的判断都会返回 object,因此它不能准确区分这两种类型。

  1. instanceof 运算符

instanceof 用于判断一个对象是否是某个构造函数的实例。它可以用来判断复杂数据类型,如数组、函数、对象等。但是,instanceof 不能用于基本数据类型,如 numberstring 等,因为它们没有构造函数。

  1. Object.prototype.toString.call 方法

这个方法兼容基本类型和复杂类型,并且兼容性最好。它通过调用 Object.prototype.toString 方法并传递要检查的对象作为参数,返回一个表示对象类型的字符串。例如:

Object.prototype.toString.call(undefined); // [object Undefined]
Object.prototype.toString.call(null); // [object Null]
Object.prototype.toString.call({}); // [object Object]
Object.prototype.toString.call([]); // [object Array]
  1. constructor 属性

每个对象都有一个 constructor 属性,指向创建该对象的构造函数。通过检查 constructor 属性的值,可以判断对象的数据类型。例如:

var arr = [];
arr.constructor === Array// true

需要注意的是,constructor 属性可以被修改,因此它不是判断数据类型的可靠方法。

总结一下,typeof 是最常用的方法,适用于基本数据类型的判断;instanceofconstructor 可以用于判断复杂数据类型;Object.prototype.toString.call 方法兼容性最好,适用于所有数据类型的判断。

Top