首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问javascript中对象的转义属性

访问javascript中对象的转义属性
EN

Stack Overflow用户
提问于 2018-05-28 18:36:06
回答 1查看 459关注 0票数 0

我有一个具有如下属性的对象:

代码语言:javascript
复制
var RouteMetaSet = {

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

我可以很容易地得到这样的属性的值:

代码语言:javascript
复制
console.log(RouteMetaSet['\/user-management\/users'])

但是,如果我将键赋给一个变量,然后将其推入括号中,这是不可能的。

代码语言:javascript
复制
var originialString = /user-management/users;
var escapedString = originialString.replace(/[-/<>*()?]/g, "\\$&"); // it should be "\/user-management\/users"
console.log(RouteMetaSet[escapedString]); // undefined

在这点上我错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-28 18:39:04

第一。这是:

originialString =/用户管理/用户;

…只是语法错误。

必须引用JS中的字符串文字。

下一步:

转义字符在JavaScript 源代码中有意义。

当字符串文本被JavaScript引擎解析时,它将被转换为字符串。在此过程中,将使用转义字符。

他们根本不是数据的一部分。如果插入带有正则表达式的斜杠,则只是将斜杠(而不是转义序列)插入到字符串中。

代码语言:javascript
复制
var RouteMetaSet = {
  '\/user-management\/users': {
    path: '/user-management/users',
    name: 'User Management',
    iconClassList: ['fa', 'fa-user'],
  }
};

var originialString = "/user-management/users";
console.log(RouteMetaSet[originialString]);

旁白:/字符不需要在JS字符串文本中转义,除非它在内联脚本中形成序列</script>的一部分。

生成的代码通常转义所有/字符,作为避免该问题的一种简单有效的方法。

如果属性名包含确实需要转义的字符(如\),那么,在解析字符串时,对其做任何明智的操作都为时已晚。

代码语言:javascript
复制
var originalString = "Example\t";

它应该是一个制表符,还是应该是一个\,然后是一个t

如果您一开始就不能相信代码是正确的,那么您就有了一个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50571918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档