1.检测数组的几种方式
1.Array.isArray(); es5
2. instanceof Array
3.arr.constructor//Array
4. toString.call([]);//”[object Array]”
2.Array的常用方法
shift(); //删除并返回数组的第一个元素
unshift(); //向数组的开头添加一个或更多元素,并返回新的长度
pop(); //删除并返回数组的最后一个元素
push(); //向数组的末尾添加一个或更多元素,并返回新的长度
concat(); //连接两个或更多的数组,并返回结果
reverse(); //颠倒数组中元素的顺序
splice(); //删除元素,并向数组添加新元素
slice(); //从某个已有的数组返回选定的元素
等方法
3.如何区分数组和对象
1、从原型入手,Array.prototype.isPrototypeOf(obj);
利用isPrototypeOf()方法,判定Array是不是在obj的原型链中,
如果是,则返回true,否则false。Array.prototype.isPrototype([]) //true
2、也可以从构造函数入手,利用对向的constructor属性
3、根据对象的class属性(类属性),跨原型链调用toString()方法。
Object.prototype.toString.call(Window);
4、Array.isArray()方法。
4.如何检测数组的数据类型
方法一、判断其是否具有“数组性质”,如slice()方法。
可自己给该变量定义slice方法,故有时会失效
方法二、obj instanceof Array 在某些IE版本中不正确
方法三、toString.call([]);//”[object Array]”
方法四、
方法一二皆有漏洞,在ECMA Script5中定义了新方法Array.isArray(),
保证其兼容性,
最好的方法如下:
if(typeof Array.isArray==="undefined"){
Array.isArray = function(arg){
return Object.prototype.toString.call(arg)==="[object Array]"
};
}