1.仿内置方法数组slice
Array.prototype.mySlice=function(n1,n2){
var n1,n2,ary=[];
if (arguments.length==0){
// 一、判断传进0个参数
return ary
}else if(arguments.length==1){
// 二、判断传进1个参数
n1=Number(n1);
if (isNaN(n1)){return ary};
// 2.1判断参数是否在length范围
if (Math.abs(n1)<this.length-1){
if (n1>=0){
for(var i=n1;i<this.length;i++){
ary[ary.length]=this[i];
}
return ary
}else{
for(var i=this.length-1;i>=this.length+n1;i--){
ary.unshift(this[i]);
}
return ary
}
}
}else if(arguments.length==2){
// 三、判断传进2个参数
n1=Number(n1);
n2=Number(n2);
// 3.1判断两个参数是否是有效数字
if(isNaN(n1)||isNaN(n2)){
return ary
}else{
// 1.n1,n2都是正数且n1<n2
if (n1<n2&&n1>-1&&n2>-1){
for(var i=n1;this.length<n2?i<this.length:i<n2;i++){
ary[ary.length]=this[i];
}
return ary
}else if(n1<n2&&n1<0&&n2<0){
//2. 2.n1,n2都式负数,且n1?<n2
for (var i=(this.length+n1>0?this.length+n1:0);i<this.length+n2;i++){
ary[ary.length]=this[i]
}
return ary
}else if(n1>=0&&n2<0||n1<0&&n2>=0){
//3. n1,n2一正一负,怎么办
if ((n1>=0&&n2<0)&&(n1<this.length+n2)){
for(var i=n1;i<this.length+n2;i++){
ary[ary.length]=this[i]
}
return ary
}else if((n1<0&&n2>=0)&&(this.length+n1<n2)){
for(var i=(n1>0?this.length+n1:0);i<(n2<this.length?n2:this.length);i++){
ary[ary.length]=this[i]
}
return ary
}
}
}
return ary
}
}
// 实现一个需求 (5).push(10).reduce(2) 5+10-2方法
Number.prototype.push=function(n){
var temp=Number(n);
var _this=Number(this);
return _this+=temp;
}
Number.prototype.reduce=function(n){
var temp=Number(n);
var _this=Number(this);
return _this-=temp;
}
var a=5;
//console.log(a.push(5).reduce(2)); //8