JavaScript 中有以下几种方法可以判断变量的类型

  • typeof 运算符:可以用于判断基本数据类型(如字符串、数字、布尔值、Undefined 等)和函数类型,但对于对象类型(如数组、日期、正则表达式等)不能准确判断。

  • instanceof 运算符:可以用于判断一个对象是否为某个构造函数的实例,但不能判断基本数据类型。

  • Object.prototype.toString() 方法:可以返回一个对象的具体类型字符串,可以判断所有数据类型,但需要注意的是需要使用 call 或 apply 方法将要判断的对象传递给 toString 方法。

  • Array.isArray() 方法:可以判断一个对象是否为数组类型。

  • constructor 属性:可以返回一个对象的构造函数,但需要注意的是 constructor 属性可以被修改,因此不能保证准确性。

举例 Object.prototype.toString() 是如何判断js 类型的

Object.prototype.toString() 方法是用来返回当前对象的类型字符串,其实现方式是返回一个类似 “[object Type]” 的字符串,其中 Type 是当前对象的类型。

 1Object.prototype.toString.call("hello") // "[object String]"
 2Object.prototype.toString.call(123) // "[object Number]"
 3Object.prototype.toString.call(true) // "[object Boolean]"
 4Object.prototype.toString.call(undefined) // "[object Undefined]"
 5Object.prototype.toString.call(null) // "[object Null]"
 6
 7var arr = [1, 2, 3];
 8Object.prototype.toString.call(arr) // "[object Array]"
 9
10var date = new Date();
11Object.prototype.toString.call(date) // "[object Date]"
12
13var reg = /abc/;
14Object.prototype.toString.call(reg) // "[object RegExp]"
15
16var func = function() {};
17Object.prototype.toString.call(func) // "[object Function]"

通过这种方式,可以精确判断变量的类型,包括基本数据类型和对象类型。

instanceof判断变量类型

 1const number = 42;  
 2number instanceof Number // false  
 3  
 4const numberObj = new Number(42);  
 5numberObj instanceof Number // true  
 6  
 7const string = "Hello, world!";  
 8string instanceof String // false  
 9  
10const stringObj = new String("Hello, world!");  
11stringObj instanceof String // true  
12  
13const bool = true;  
14bool instanceof Boolean // false  
15  
16const boolObj = new Boolean(true);  
17boolObj instanceof Boolean // true  
个人笔记记录 2021 ~ 2025