You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript自定义Map类中使用内置Map?

解决自定义Map类与内置Map的递归冲突问题

问题原因

你自定义的类名和内置Map重名了,在类内部执行new Map()时,JS会优先引用你自己定义的Map类,导致无限递归调用。

解决方案

方案1:明确引用内置Map构造函数

直接使用全局对象上的Map来区分自定义类和内置类型,推荐用globalThis(兼容浏览器、Node.js等所有环境):

class Map {
    constructor() {
        // 用globalThis.Map指定调用原生内置Map
        this.myMap = new globalThis.Map();
    }
}

方案2:用对象存储浮点数键(替代内置Map)

对象的键会被自动转为字符串,浮点数转成字符串后仍能保持唯一性,完全可以用来当键使用。你可以封装简单的set/get方法来操作:

class Map {
    constructor() {
        this.myMap = {};
    }

    // 存入键值对
    set(key, value) {
        this.myMap[String(key)] = value;
    }

    // 获取值
    get(key) {
        return this.myMap[String(key)];
    }
}

比如调用set(0.3, 'foo')后,用get(0.3)就能正确拿到'foo',不会因为浮点数的问题出现键冲突。

内容的提问来源于stack exchange,提问作者Will He

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 20:10:31