gpt4 book ai didi

javascript - Internet Explorer ECMAScript 的 Polyfill 设置构造函数以允许可迭代参数

转载 作者:行者123 更新时间:2023-11-29 16:41:06 25 4
gpt4 key购买 nike

我使用 MDN docs for the Set object 中描述的构造函数编写了一些代码.不幸的是,Internet Explorer 11 会忽略构造函数中的任何可迭代参数。我快速尝试覆盖构造函数(下面的代码)但没有成功(Set.prototype.size 返回 - 'this' 不是一个集合对象)。

var testSet = new Set([0]);
if (testSet.size === 0) {
//constructor doesnt take an iterable as an argument - thanks IE
var oldProto = Set.prototype
Set = function (iterable) {
if (iterable) {
iterable.forEach(this.add.bind(this));
}
};
Set.prototype = oldProto;
}

有没有办法允许 Set 构造函数传递一个可迭代的参数并且仍然在 I.E 中工作? ?我想下一个最佳选择是创建某种返回新 Set 实例的工厂方法 (Set.create)。

最佳答案

您没有在该代码中创建新的 Set 实例。如果你想覆盖构造函数,你应该这样做

if (new Set([0]).size === 0) {
//constructor doesnt take an iterable as an argument - thanks IE
const BuiltinSet = Set;
Set = function Set(iterable) {
const set = new BuiltinSet();
if (iterable) {
iterable.forEach(set.add, set);
}
return set;
};
Set.prototype = BuiltinSet.prototype;
Set.prototype.constructor = Set;
}

关于javascript - Internet Explorer ECMAScript 的 Polyfill 设置构造函数以允许可迭代参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45686278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com