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

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

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

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

// 判断变量类型
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是用来检查一个对象是否是一个指定类型的实例,其返回值为一个布尔值示例代码如下:

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不能用来判断基本数据类型的值。

var myVar = 'hello';
console.log(myVar instanceof String); // false

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

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月前
|
JavaScript 前端开发
js中的bind,call,apply方法的区别以及用法
JavaScript中,`bind`、`call`和`apply`均可改变函数的`this`指向并传递参数。其中,`bind`返回一个新函数,不立即执行;`call`和`apply`则立即执行,且`apply`的参数以数组形式传递。三者在改变`this`指向及传参上功能相似,但在执行时机和参数传递方式上有所区别。
34 1
|
2月前
|
设计模式 JavaScript 前端开发
js中new和object.creat区别
【10月更文挑战第29天】`new` 关键字和 `Object.create()` 方法在创建对象的方式、原型链继承、属性初始化以及适用场景等方面都存在差异。在实际开发中,需要根据具体的需求和设计模式来选择合适的方法来创建对象。
|
3月前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
141 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
3月前
|
存储 JavaScript 前端开发
js中函数、方法、对象的区别
js中函数、方法、对象的区别
31 2
|
3月前
|
JavaScript 前端开发
【JavaScript】let,const和var的区别
总的来说,随着ECMAScript 6(ES6)及后续版本的推广,`let`和 `const`因其增强的块级作用域和对变量行为的更严格控制,逐渐成为现代JavaScript编码实践中推荐使用的变量声明方式。而 `var`由于其历史遗留的局限性,正逐渐被边缘化,但在维护老代码或处理特定兼容性需求时仍需了解。
52 3
|
4月前
|
JavaScript 前端开发
JavaScript中单引号和双引号的效果的一点区别
JavaScript中单引号和双引号的效果的一点区别
|
3月前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
59 0
|
4月前
|
JavaScript 前端开发
JS基础 if和switch区别
本文比较了JavaScript中的`if`语句和`switch`语句的区别,并通过示例代码展示了它们的用法,解释了何时使用`if`更合适以及`switch`语句的特点和应用场景。
34 0
|
2月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
37 1
JavaScript中的原型 保姆级文章一文搞懂
下一篇
开通oss服务