JavaScript 数组和类数组鉴定的几种方式

什么是类数组?

类数组是拥有length属性,其它属性(索引)为非负整数(对象中的索引会被当做字符串来处理),单数不具有数组所具有的方法;

类数组和数组的写法是一样的,但是它不是数组,对象是Object; arguments是最我们最常见的类数组

var obj = {}
var arr = [];

instanceof

instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

console.log(obj instanceof Array)
console.log(arr instanceof Array)

constructor

constructor 属性是记录着构造函数的指向。

创建一个数组,数组的__proto__里面记录着构造函数的指向为Array对象

在这里插入图片描述
创建一个对象,数组的__proto__里面记录着构造函数的指向为Object对象
在这里插入图片描述

console.log(obj.constructor === Array)
console.log(arr.constructor === Array)

isPrototypeOf

isPrototypeOf 判断对象是否存在于另一个对象的原型链上

console.log(Array.prototype.isPrototypeOf(obj))
console.log(Array.prototype.isPrototypeOf(arr))

toSting

使用toString方法来判断

console.log(Object.prototype.toString.call(obj) == '[object Array]')
console.log(Object.prototype.toString.call(arr) == '[object Array]')

isArray

ES5新增的API,用来判断是否为数组

console.log(Array.isArray(obj))
console.log(Array.isArray(arr))
发布了33 篇原创文章 · 获赞 24 · 访问量 5533

猜你喜欢

转载自blog.csdn.net/qq_39157944/article/details/103244479
今日推荐