if([].unshift(1)!==1) //往空数组中从前面添加一项,其他浏览器会返回1,而IE6,7不会返回数组长度。这时就执行if语句
{
var _unshift = Array.prototype.unshift; //函数劫持。
Array.prototype.unshift = function(){
_unshift.apply(this,arguments);
return this.length;
}
}
8.splice在一个参数的情况下,IE8以及以下版本默认第二个参数为0,而其他浏览器是数组长度。
复制代码 代码如下:
if([1,2,3].splice(1).length == 0) //IE8以及以下版本会等于0,其他版本会等于3,进入if里面
{
var _splice = Array.prototype.splice;
Array.prototype.splice = function(a){
if(arguments.length == 1) //如果只有一个参数时
{
return _splice.call(this,a,this.length);
}else{
return _splice.apply(this,arguments);
}
}
}
这个方法会改变数组的选项,因此数组的push,pop,shift,unshift(这几个方法也会修改数组的选项)都会调用这个方法来实现。
这里有一个地方需要注意:
复制代码 代码如下:
var color = new Array('red','blue','yellow','black');
var color2 = color.splice(2,0,'brown','pink');
alert(color); // red,blue,brown,pink,yellow,black,在yellow选项上,开始操作,如果删除为0,则添加的选项是在yellow之前插入。切记。
这里请大家去看下splice和slice的区别,返回值,以及对原数组的影响。
以上就是本节的内容的精简版了,虽然精简,但重点都在,希望对大家阅读本节的时候能有所帮助
您可能感兴趣的文章: