Polyfill — это способ изменить или добавить новые функции. По сути, это фрагмент кода для добавления/изменения новых функций. Он используется для обеспечения современной функциональности веб-браузеров.
По сути, это фрагмент кода, обеспечивающий современные функциональные возможности веб-браузеров.
Он используется для добавления/изменения новых функций.
Это похоже на резервный вариант браузера: если ваш браузер не предоставляет функцию map(), вам нужно будет написать свою собственную функцию map(). Мы обсудим полифиллы для следующих методов:
- Using map( )
- Using forEach( )
- Using reduce( )
Мы напишем собственные функции map(), forEach() и reduce(). Все это функции более высокого порядка, которые определены внутри Array.prototype, чтобы они были доступны для всего объявленного массива.
Для создания собственного полифилла нам нужно объявить их внутри Array.prototype.
1. Polyfill for map( ) function
Пример: нам дан массив, и нам нужно умножить каждый элемент на два.
Javascript
const arr = [1, 2, 3, 4, 5];
function
callback(ele) {
return
ele * 2;
}
Array.prototype.myMap =
function
(callback) {
const myArr = [];
for
(const i
in
this
) {
myArr.push(callback(
this
[i]));
}
return
myArr;
};
const newArr = arr.myMap(callback);
for
(i
in
newArr) {
console.log(newArr[i]);
}
Выход:
2 4 6 8 10
2. Polyfill for forEach( ) function
Пример: создание собственной функции, подобной функции forEach() в JavaScript.
Javascript
const arr = [1, 2, 3, 4, 5];
function
myFunction(ele) {
console.log(ele);
}
Array.prototype.myForEach =
function
(callback) {
for
(const i
in
this
) {
callback(
this
[i]);
}
};
arr.myForEach(myFunction);
Выход:
1 2 3 4 5
3. Polyfill for reduce( ) function
Пример: Найдите сумму всех четных чисел в заданном массиве.
Javascript
const arr = [1, 2, 3, 4, 5, 6];
function
callback(ele) {
if
(ele % 2 == 0) {
return
true
;
}
return
false
;
}
Array.prototype.myReduce =
function
(callback, sum) {
for
(const i
in
this
) {
if
(callback(
this
[i])) {
sum +=
this
[i];
}
}
return
sum;
};
const sum = arr.myReduce(callback, 0);
console.log(sum);
Выход:
12