在ES5中,我們可以通過原型擴展的方式自行實現數組的map
方法。以下是實現原理和代碼示例:
Array.prototype.myMap = function(callback, thisArg) {
if (this == null) {
throw new TypeError('this is null or not defined');
}
if (typeof callback !== 'function') {
throw new TypeError(callback + ' is not a function');
}
var O = Object(this);
var len = O.length >>> 0;
var A = new Array(len);
for (var k = 0; k < len; k++) {
if (k in O) {
var kValue = O[k];
var mappedValue = callback.call(thisArg, kValue, k, O);
A[k] = mappedValue;
}
}
return A;
};
var arr = [1, 2, 3];
var newArr = arr.myMap(function(item) {
return item * 2;
});
console.log(newArr); // [2, 4, 6]
這個實現考慮了邊界情況,如空值檢查、回調函數驗證等,與原生map方法行為基本一致。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。