检测数据是否是真数组
1.isArray() : ES5静态方法 判断一个数据是不是为数组
var arr = []
console.log(Array.isArray(arr)); //true
2.isPrototypeOf() :判断对象的原型链上是否存在Array原型
var arr = []
console.log(Array.prototype.isPrototypeOf(arr));//true
3.instanceof:判断Array的原型在不在arr的原型链上
var arr = [];
console.log(arr instanceof Array); // true
4.对象的constructor属性:arr的构造函数是否全等与Array
var arr = []
console.log(arr.constructor === Array); //true
5.最严格的方法:Object.prototype.toString();用Object原型上的toString方法,数组无法调用,所以更改this指向arr ;返回'[object Array]'
var arr = []
console.log(Object.prototype.toString.call(arr)); //'[object Array]'
将伪数组转换为真数组
假设有个伪数组:arg
方法一:两种写法都行
真数组的slice方法,不填参数则将所有元素返回,返回一个真数组;但伪数组无法调用slice方法
则要用call改变指向;
var newArr=Array.prototype.slice.call(arg)
var newArr=[].prototype.slice.call(arg)
方法二:
var newArr=Array.from(arg)