//forEach源碼實現 Array.prototype.customeForEach = function (func, thisValue) { var arr = this; for (var i = 0; i < arr.length; i++) { func.call(thisValue, arr[i], i, arr); } } //some源碼實現 Array.prototype.customeSome = function (func, thisValue) { var arr = this; var state = false; for (var i = 0; i < arr.length; i++) { var val = func.call(thisValue, arr[i], i, arr); if (val) { state = true; break; } } return state; } //reduce源碼實現 Array.prototype.customeReduce = function (func, thisValue) { var arr = this; var total = thisValue ? thisValue : arr[0]; for (var i = thisValue ? 0 : 1; i < arr.length; i++) { total = func(total, arr[i], i); } return total; } //filter源碼實現 Array.prototype.customeFilter = function (func, thisValue) { var arr = this; var result=[]; for (var i = 0; i < arr.length; i++) { var val = func.call(thisValue, arr[i], i, arr); if(val){ result.push(arr[i]) } } return result; } //map源碼實現 Array.prototype.customeMap=function(func, thisValue){ var arr = this; var result=[]; for (var i = 0; i < arr.length; i++) { var val = func.call(thisValue, arr[i], i, arr); result.push(val); } return result; } //every源碼實現 Array.prototype.customeEvery=function(func,thisValue){ var arr = this; var state = true; for (var i = 0; i < arr.length; i++) { var val = func.call(thisValue, arr[i], i, arr); if (!val) { state = false; break; } } return state; }
源碼的學習對於提高js仍是很重要的,咱們不僅僅是要學會怎麼用,還要搞清楚內部是如何實現,以前我對數組的這些方法也不是很清楚,只用到了其中的一部分,如今經過總結能夠加深對他們的理解。數組