什么是类数组?
类数组是拥有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))