小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
数组是日常开发过程中必不可少的一种数据类型,如何去判断该数据类型是数组也是一个至关重要的环节。面试中,这也是一个常常会被问到的题目,如何快速的回答面试官的问题,下面就让我们快速罗列一下...
Array.isArray()
如果对象是 Array ,则返回true,否则为false。
Array.isArray([1, 2, 3]);
// true
Array.isArray({foo: 123});
// false
Array.isArray("foobar");
// false
Array.isArray(undefined);
// false
arr instanceof Array
instanceof 运算符用于检测构造函数的 prototype 属性(constructor.prototype)是否出现在某个实例对象的原型链上。
const arr = [1, 2];
arr instanceof Array
// true
Array.prototype.isPrototypeOf()
isPrototypeOf() 方法用于测试一个对象是否存在于另一个对象的原型链上。
isPrototypeOf()与instanceof运算符不同。在表达式 "object instanceof AFunction"中,object的原型链是针对AFunction.prototype进行检查的,而不是针对AFunction本身
arr.constructor === Array
判断对象的构造函数是否是数组。
constructor 是一种用于创建和初始化class创建的对象的特殊方法。如果我们判断该对象的构造函数就是Array,那就是说该对象可以通过数组的构造函数(Array)创建得到,也就说明它是数组了。
Object.getPrototypeOf(arr) === Array.prototype
Object.getPrototypeOf(object) 方法返回指定对象的原型。
如果对象的原型是数组原型(Array.prototype),也可以确定对象就是数组。
Object.prototype.toString.call(arr) === '[object Array]'
toString() 方法返回一个表示该对象的字符串。
每个对象都有一个 toString() 方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString() 方法被每个 Object 对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中 type 是对象的类
结语
如果这篇文章帮到了你,欢迎点赞👍和关注⭐️。
文章如有错误之处,希望在评论区指正🙏🙏。
参考: