ES6 Map, showing exception intermittently , Uncaught TypeError: map.put is not a function

ES6 Map, showing exception intermittently , Uncaught TypeError: map.put is not a function

几周前 map.put 曾经工作,但现在我们间歇性地收到此错误消息:

var mapTypeSubtype = new Map();
Uncaught TypeError: mapTypeSubtype.put is not a function
    at Test.js:411
    at Array.forEach (<anonymous>)
    at objGenericListener (Test.js:410)

这是 Javascript api 方面的问题吗?我看了文档,没有.put这样的方法,改成.set。但是奇怪的是,它曾经毫无问题地投入使用,但现在它断断续续地工作。有什么建议么?将其更改为 .set 这对我们来说是一个很大的改变,因为我们在项目中的许多地方都使用了地图。

更新

从引入 put 方法的地方进行了大量搜索后,我看到有一个 js 被加载到 salesforce 内部的浏览器中。这是在那里面定义的。

Map.prototype.put = function(a, b) {
    a && "undefined" != typeof b && (a in this.map || this.size++,
    this.map[a] = b)
}

所以我认为这有时可能无法加载,这会破坏我们的实现。

谢谢

如您所知,Map class 中没有任何 put 方法,正如@Mahendra Pratap 提到的 ES6 文档 (https://www.ecma-international.org/ecma-262/6.0/#sec-map-constructor).

在使用 Map 之前,您可以 运行 类似下面的脚本来防止重构您的项目:

Map.prototype.put = function(key, value){
    return this.set(key, value);
}

More details

关于您的代码为何有效的一些猜测:

  • 也许在您的项目或包含的库中有 Map.prototype.put
  • HashMap中有put方法,java中有class方法,javascript中没有。确保您使用的是 javascript.
  • 您可以在 javascript 中找到 HashMap 的一些实现:JavaScript Hashmap Equivalent