Javascript Polyfill基础:如何为Uint8Array.fill实现Polyfill

Javascript Polyfill基础:如何为Uint8Array.fill实现Polyfill,javascript,arrays,polyfills,Javascript,Arrays,Polyfills,这里是Polyfill新手。我完全被这个简单的例子弄糊涂了,在这个例子中,我想初始化一个类型化数组: var x = new Uint8Array(3).fill(42); console.log(x); 这在Chrome和Firefox中运行良好:控制台显示[42,42,42]。Safari不支持fill方法,抛出以下错误:“TypeError:new Uint8Array(3)。fill不是函数。”。这很有道理。所以我想我需要实现一个多边形填充,对吗?正确的!MDN提供了,但当我添加这段代

这里是Polyfill新手。我完全被这个简单的例子弄糊涂了,在这个例子中,我想初始化一个类型化数组:

var x = new Uint8Array(3).fill(42);
console.log(x);
这在Chrome和Firefox中运行良好:控制台显示
[42,42,42]
。Safari不支持
fill
方法,抛出以下错误:
“TypeError:new Uint8Array(3)。fill不是函数。”
。这很有道理。所以我想我需要实现一个多边形填充,对吗?正确的!MDN提供了,但当我添加这段代码时,没有任何变化:Safari继续抛出相同的错误。显然我做错了什么。这就是用于
Uint8Array
的正确polyfill吗

以下是我正在执行的代码(包括MDN polyfill):

if(!Array.prototype.fill){
Array.prototype.fill=函数(值){
//步骤1-2。
if(this==null){
抛出新的TypeError('这是null或未定义');
}
var O=对象(此);
//步骤3-5。
var len=O.length>>>0;
//步骤6-7。
var start=参数[1];
var relativeStart=start>>0;
//第八步。
var k=相对启动<0?
数学最大值(len+relativeStart,0):
Math.min(相对论,len);
//步骤9-10。
var end=参数[2];
var relativeEnd==未定义?
len:end>>0;
//第11步。
var final=相对值<0?
数学最大值(len+relativeEnd,0):
Math.min(相对论,len);
//步骤12。
while(k
有什么建议吗?谢谢

(只是重复@Rhumbori的评论,结束我的问题…)

更改这些行

if (!Array.prototype.fill) {
 Array.prototype.fill = function(value) {


因为它是
Uint8Array
而不是
Array
?你试过把polyfill代码改成
if(!Uint8Array.prototype.fill){Uint8Array.prototype.fill=function(value){…
?@Rhumborl:是的——成功了。谢谢你!(现在为什么我没看到呢?有时候最明显的事情是最难看到的…)
if (!Array.prototype.fill) {
 Array.prototype.fill = function(value) {
if (!Uint8Array.prototype.fill) {
 Uint8Array.prototype.fill = function(value) {