Zaczynamy pisać polyfill dla funkcji map. Nie będzie to jeszcze ostateczna wersja, ale całkowity odpowiednik tego, co mamy w JavaScript.
Iteracja pierwsza – element:
Array.prototype.myMap = function(callbackFn) {
var arr = [];
for (var i = 0; i < this.length; i++) {
arr.push(callbackFn(this[i]));
}
return arr;
}
Iteracja druga – element i indeks:
Array.prototype.myMap = function(callbackFn) {
var arr = [];
for (var i = 0; i < this.length; i++) {
arr.push(callbackFn(this[i], i));
}
return arr;
}
Iteracja trzecia – element, indeks, tablica:
Array.prototype.myMap = function(callbackFn) {
var arr = [];
for (var i = 0; i < this.length; i++) {
arr.push(callbackFn(this[i], i, this));
}
return arr;
}
Iteracja czwarta, obsługa thisArg:
Array.prototype.myMap = function(callbackFn, thisArg) {
var context = thisArg || globalThis;
var arr = [];
for (var i = 0; i < this.length; i++) {
arr.push(callbackFn.call(context, this[i], i, this));
}
return arr;
}
let arr = [1,2,3];
let arr2 = arr.map(function(el){
return el + this.num;
}, {num: 10});
console.log(arr2.toString());
//11,12,13