我正在尝试学习 js 并尝试扩展 Map 。我做了:

function mapExtend(mapInstance) {
  function MapExtend(){
  }

  MapExtend.prototype = Object.create(Map.prototype);
  MapExtend.prototype.constructor = MapExtend;

  return new MapExtend(mapInstance)
}

我这样做了:
const b = new Map()
mapExtend(b).get(1)

我收到以下错误:
Uncaught TypeError: Method Map.prototype.get called on incompatible receiver #<MapExtend>
    at MapExtend.get (<anonymous>)
    at <anonymous>:1:14

我在这里犯了什么错误?

最佳答案

我现在不能给你解释,因为我需要先验证我的假设。

但是可以使用 ES6 语法进行扩展:

function mapExtend(mapInstance) {
  class MapExtend extends Map {}

  return new MapExtend(mapInstance)
}

const b = new Map()
mapExtend(b).get(1)

关于javascript - 如何在js中扩展 map ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52015305/

10-10 06:51