仿内置方法
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