gpt4 book ai didi

javascript - 创建一个从 ES6 Map 扩展的类

转载 作者:行者123 更新时间:2023-12-01 15:48:04 26 4
gpt4 key购买 nike

试图摆脱 ES6 map 上的自定义获取/设置功能。目前使用Babel将我的代码转换为 ES5。
Chrome Version 41.0.2272.101 m

class MyMap extends Map {
get(key) {
if (!this.has(key)) { throw new Error(...); }
return super.get(key);
}

set(key) {
if (this.has(key)) { throw new Error(...); }
return super.set(key);
}
}

不确定我是否只是语法错误,或者我错过了某种实现。但我收到以下错误:

Method Map.prototype.forEach called on incompatible reciever

最佳答案

Babel 明确声明他们不支持扩展内置类。见 http://babeljs.io/docs/usage/caveats/#classes .然而,原因并不像“ES5 中的限制”那么简单,因为 Map不是 ES5 的特性。似乎 Map 的实现不支持基本模式,例如

Map.prototype.set.call(mymap, 'key', 1);

这本质上是 Babel 在这种情况下生成的。问题是包括 V8 在内的 Map 实现过于严格,并检查 thisMap.set.call call 正是一个 Map,而不是在其原型(prototype)链中包含 Map。

同样适用于 Promise。

关于javascript - 创建一个从 ES6 Map 扩展的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058791/

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