push方法的实现,分析push的功能:向数组中添加接受的参数,可接受不同的数据类型,也可以接受多个参数,且返回最终数组的长度
Array.prototype.push = function () {
var argLength = arguments.length;
var arrLength = this.length;
for (var i = 0; i < argLength; i++) {
this[arrLength + i] = arguments[i];
}
return this.length;
};
pop方法的实现,分析pop的功能:删除数组的最后一位,且返回删除的值
Array.prototype.pop = function () {
var arrLength = this.length;
var deleteObj = this[arrLength - 1];
this.length = arrLength - 1;
return deleteObj;
};
shift方法的实现,分析shift的功能:删除数组的第一项,并返回被删除的值
Array.prototype.shift = function () {
var arrLength = this.length;
var deleteObj = this[0];
for (var i = 0; i < arrLength; i++) {
this[i] = this[i + 1];
}
this.length -= 1;
return deleteObj;
};
unshift方法的实现,分析unshift的功能:在数组第一位前加入新的项,可以传入多个参数,且可以是不同类型,且返回最终数组的长度
Array.prototype.unshift = function () {
var argulength = arguments.length;
var arrLength = this.length;
for (var i = arrLength; i >= 0; i--) { //这里必须倒着赋值,因为顺着如果arguments的长度小于原数组的长度,那么会覆盖原数组的数据
this[i + argulength - 1] = this[i - 1]
}
for (var i = 0; i < argulength; i++) {
this[i] = arguments[i]
}
return this.length;
};