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

如何从对象中动态调用带UID后缀的lastTime Cookie?

动态获取带UID后缀的Cookie属性方案

你遇到的问题核心是:直接用点语法访问cookies.lastTime时,对象中不存在这个属性,只有拼接了UID的lastTime_xxx属性。以下两种方案可以让你保持类似点语法的调用习惯,自动关联UID获取目标Cookie:

方法一:使用Proxy代理对象

这是最灵活的方案,能完全模拟点语法的调用体验,代理会自动帮你拼接UID后缀查找属性:

// 原始Cookie对象(转换后的)
const rawCookies = {
  'lastTime_1346234672457124': '2024-05-20 14:30:00',
  'token_1346234672457124': 'abc123xyz'
};

// 当前用户UID
const uid = '1346234672457124';

// 创建代理后的Cookie对象
const cookies = new Proxy(rawCookies, {
  get(target, propName) {
    // 拼接完整属性名
    const fullKey = `${propName}_${uid}`;
    // 返回对应值,不存在则返回undefined
    return target[fullKey];
  }
});

// 直接用点语法调用即可
console.log(cookies.lastTime); // 输出 '2024-05-20 14:30:00'
console.log(cookies.token); // 输出 'abc123xyz'

如果后续UID发生变化,只需要更新uid变量,代理会自动使用新UID拼接,无需修改其他逻辑。

方法二:手动添加自定义Getter属性

如果不想使用Proxy,可以给原始对象添加Getter属性,实现点语法访问:

const rawCookies = {
  'lastTime_1346234672457124': '2024-05-20 14:30:00'
};
const uid = '1346234672457124';

// 给指定前缀添加Getter
function setupDynamicCookie(obj, prefix) {
  Object.defineProperty(obj, prefix, {
    get() {
      return obj[`${prefix}_${uid}`];
    }
  });
}

// 为lastTime添加Getter
setupDynamicCookie(rawCookies, 'lastTime');

// 点语法调用
console.log(rawCookies.lastTime); // 输出对应Cookie值

如果有多个需要动态访问的前缀(比如token、userName),可以循环批量添加Getter。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 21:45:34