📜  什么是 Polyfill?

📅  最后修改于: 2022-05-13 01:56:16.437000             🧑  作者: Mango

什么是 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