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

JavaScript报错:Cannot set properties of undefined 问题求助

问题解决:Map中对象动态添加属性报错

报错Cannot set properties of undefined (setting 'context')的核心原因是你通过streams[a]获取到的是undefined,说明a这个键并没有存在于Map中,和对象本身是否预先定义context属性无关。

可能的原因及解决方案:

  • 变量a的引用/值不一致
    Map的键是基于严格相等(===)判断的:

    • 如果a是原始类型(字符串、数字等),要确保调用set和后续获取时,a的值完全相同,没有被重新赋值。
    • 如果a是引用类型(对象、数组等),必须保证set和get用的是同一个对象引用。比如你不能先set时用let a = {},之后又把a赋值为另一个对象a = {},这时候两个a是不同的引用,Map会认为是不同的键。
  • 正确的操作流程
    先通过get方法获取对象,确认存在后再修改属性:

    var streams = new Map();
    // 确保a是固定的引用或值
    streams.set(a, { id: 123 });
    const targetObj = streams.get(a);
    // 先判断对象是否存在,避免报错
    if (targetObj) {
      targetObj.context = someNotNullObject;
    } else {
      console.error('键a不存在于当前Map中');
    }
    

    如果是引用类型键的场景,固定引用即可:

    // 固定a的引用,不要后续修改它的指向
    const a = {};
    var streams = new Map();
    streams.set(a, { id: 123 });
    streams.get(a).context = someNotNullObject; // 正常执行
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:57:32