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

时间:2017-01-05 00:55:07

标签: javascript

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

例如:数组fill()方法:(浏览器支持:chrome [v.45],I.E [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>

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

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

2 个答案:

答案 0 :(得分:5)

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

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

新功能的简单JavaScript实现有时可能,这些通常称为“polyfill”。许多MDN页面都包含此类代码(one example)。但是,某些语言功能涉及新语法,当然不能用简单的JavaScript代码重现。

答案 1 :(得分:0)

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

import 'core-js'

目前core-js polyfill library是提供跨浏览器支持的最简单方法