JavaScript中Object.prototype.toString.call()、instanceOf和Array.isArray()的区别

Object.prototype.toString.call()、instanceOf和Array.isArray()都可以用来判断一个值的类型,但是他们有一些区别。

Object.prototype.toString.call() 该方法返回一个表示对象类型的字符串。可以使用这个方法来判断一个值的类型。示例代码如下:

javascript 复制代码
// 判断变量类型
var myVar = null;
console.log(Object.prototype.toString.call(myVar)); // [object Null]
 
var myVar = {};
console.log(Object.prototype.toString.call(myVar)); // [object Object]
 
var myVar = [];
console.log(Object.prototype.toString.call(myVar)); // [object Array]

instanceof instanceof是用来检查一个对象是否是一个指定类型的实例,其返回值为一个布尔值示例代码如下:

javascript 复制代码
var myVar = new Array();
console.log(myVar instanceof Array); // true
 
var myVar = new String();
console.log(myVar instanceof String); // true
 
var myVar = new Object();
console.log(myVar instanceof Object); // true

需要注意的是,instanceof不能用来判断基本数据类型的值。

javascript 复制代码
var myVar = 'hello';
console.log(myVar instanceof String); // false

Array.isArray() 该方法用来判断一个值是否为数组类型,其返回值为一个布尔值。示例代码如下:

javascript 复制代码
var myVar = [];
console.log(Array.isArray(myVar)); // true
 
var myVar = new Array();
console.log(Array.isArray(myVar)); // true
 
var myVar = {};
console.log(Array.isArray(myVar)); // false
相关推荐
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
卡布鲁2 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++
李少兄2 天前
JavaScript 隐式全局变量解析
javascript
霍霍的袁2 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超2 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int2 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
沙蒿同学2 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端