什么是 Polyfill?
Polyfill是一种修改或添加新功能的方法。它基本上是添加/修改新功能的一段代码。它用于为 Web 浏览器提供现代功能。
- 它基本上是为 Web 浏览器提供现代功能的一段代码。
- 它用于添加/修改新功能。
就像浏览器后备一样,如果您的浏览器不提供 map()函数,那么您将需要编写自己的 map()函数。我们将讨论以下方法的 polyfill:
- 使用地图()
- 使用 forEach()
- 使用 reduce()
我们将编写自己的 map()、forEach() 和 reduce()函数。这些都是在Array.prototype中定义的高阶函数,因此所有声明的数组都可以访问它们。
为了创建我们自己的 polyfill,我们需要在Array.prototype 中声明它们。
1. map()函数的Polyfill
示例:我们已经得到了数组,我们需要将每个元素乘以 2。
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]);
}
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);
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);
输出:
2
4
6
8
10
2. forEach( )函数的Polyfill
示例:在 JavaScript 中创建我们自己的函数,例如 forEach( )函数。
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.reduce()函数的Polyfill
示例:查找给定数组中所有偶数的总和。
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
参考: https://developer.mozilla.org/en-US/docs/Glossary/Polyfill