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

JavaScript中通过变量访问对象转义属性失败,问题出在哪?

问题分析:为什么通过转义后的变量无法访问对象属性?

咱们先揪出你代码里的两个核心问题,一步步解决:

1. 变量定义的语法错误

你写的 var originialString = /user-management/users; 会直接触发JavaScript语法错误!因为/user-management/会被解析成正则表达式字面量,后面的users会被当作未定义的标识符,浏览器会报Uncaught SyntaxError: Invalid regular expression flags。

正确的做法是把路径定义成字符串类型,给它加上引号:

var originalString = '/user-management/users';

2. 多余的转义操作导致键不匹配

你误以为RouteMetaSet里的键是带反斜杠的\/user-management\/users,但实际上在JavaScript字符串中,\/只是用来表示一个普通的/(而且/在单/双引号字符串里根本不需要转义,所以'\/user-management\/users'和'/user-management/users'是完全等价的)。

也就是说,你的RouteMetaSet的键本质就是/user-management/users,而你通过replace转义后得到的是带反斜杠的字符串\/user-management\/users(实际内容是每个/前都加了\),这个转义后的字符串和对象的键完全不匹配,自然访问不到,返回undefined。

修正后的完整代码

var RouteMetaSet = { '/user-management/users': { path: '/user-management/users', name: 'User Management', iconClassList: ['fa', 'fa-user'] } };

// 正确定义路径字符串
var originalString = '/user-management/users';
// 直接用原字符串访问,不需要转义
console.log(RouteMetaSet[originalString]); // 输出对应的对象内容

总结一下:

  • 先把路径变量定义成字符串,避免语法错误
  • 对象的键就是你看到的原始路径字符串,不需要额外转义,直接用变量访问即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:42:15