为什么旧版浏览器不支持 javascript 中的新内置方法



为什么旧版浏览器不支持 JavaScript 中的某些内置方法?

例如:数组fill()方法:(浏览器支持:chrome[v.45],即[v.12.0],Opera[v.32.0]等)

出于好奇,我决定"重新发明轮子"并重新创建上述方法:

<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
Array.prototype.myFunction = function (staticValue, start, end) {
  for(var i = 0; i< this.length; i++) {
     if(i===start) {
         for(start= i; i<end+1; i++) {
             this[i] = staticValue;
         };
     };
     if(start == undefined && end == undefined) {
         this[i] = staticValue;
     };
  };
};
var testFruits = ["Banana", "Orange", "Apple", "Mango", 456, 48999, "power"];
var cars = ["Saab", "Volvo", "BMW"];
testFruits.myFunction("Kiwi", 1, 3);
cars.myFunction("Voom!");
document.getElementById("demo").innerHTML =
testFruits + "<br />" + "<br />"  +cars;
</script>
</body>
</html>

这是否意味着通过重新创建一些新的但支持不佳的内置方法使您的代码完全受旧浏览器支持?

我的理论是肯定的,考虑到我只使用常规函数和常用技术来提出解决方案。

较旧的浏览器很。实现旧浏览器的人不会返回并添加新功能。

如果JavaScript语言功能在2015年标准化,那么2012年发布的浏览器就没有它,因为时间旅行并不常见。有人可能会发布旧浏览器的更新并非不可能,但它不再是旧浏览器了。

新功能的普通JavaScript实现有时是可能的,这些通常被称为"polyfills"。 许多MDN页面都包含这样的代码(一个例子)。然而,一些语言功能涉及新的语法,当然不能用简单的JavaScript代码复制。

在实际意义上,如果你对你的项目使用编译,你可以考虑在你的入口点的顶部添加

import 'core-js'

目前core-js polyfill库是使跨浏览器支持的最简单方法

最新更新