为什么我无法扩展ES6地图?这是我的代码:
class M extends Map {}
let m = new M();
m.set('key','val');
在Babel "Try It Out" page上运行它,我明白了:
Method Map.prototype.set called on incompatible receiver [object Object]
还有一些问题似乎与此问题重复(Create a class extending from ES6 Map和Inheriting from Set.prototype),但我认为这是一个不同的问题。也许我是密集的,但我无法告诉他们我的极其简单的例子是否应该起作用。这两个问题的问题是否试图在他们的Map(或Set)扩展中做一些奇怪的事情?或者,就像我的例子中的情况一样,通过扩展Map是不可能做任何有用的事情? (因为如果你不能继承其最基本的方法之一,扩展它的意义是什么?)但如果不可能对它做任何有用的事情,为什么它被允许呢?在这个小例子中,我有什么可能做错的吗?或者我只是没有明白为什么有人想要扩展Map。
哦,我意识到我没有在这里展示为什么我想扩展地图。我告诉你:我不想改变它现有的任何功能,我只是想添加其他方法 - 但不是Map原型,只是我自己的子类。