为什么旧版浏览器不支持 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>
这是否意味着通过重新创建一些新的但支持不佳的内置方法可以使您的代码完全被旧浏览器支持?
我的理论是肯定的,考虑到我只使用常规函数和常用技术来提出解决方案。
最佳答案
旧版浏览器旧。实现旧浏览器的人不会回头添加新功能。
如果 JavaScript 语言功能在 2015 年标准化,那么 2012 年发布的浏览器就没有它,因为时间旅行并不常见。有人可能会为旧浏览器发布更新并非不可能,但那样它就不再是旧浏览器了。
新功能的纯 JavaScript 实现有时是可能的,这些通常称为“polyfill”。许多 MDN 页面包含此类代码 ( one example )。然而,一些语言特性涉及新语法,当然不能用简单的 JavaScript 代码重现。
关于javascript - 为什么旧浏览器不支持 javascript 中的新内置方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475663/