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

如何通过点表示法访问JavaScript中的无效标识符属性?

能不能用点表示法访问带空格的对象属性?

嘿,这个问题问得很实际!直接给你结论:没办法直接用点表示法访问带空格(或者其他不符合JavaScript标识符规则)的属性名。

为什么呢?因为JavaScript里点表示法的语法要求,后面跟的属性名必须是一个有效的标识符——简单说就是只能以字母、下划线_或者美元符$开头,后面可以跟字母、数字、下划线或美元符,空格、连字符这类字符完全不符合规则,所以写person.first name会直接触发语法错误。

举个直观的例子:

const person = {
  'first name': 'Bob',
  'age': 30,
  last_name: 'Brown'
};

// 合法的方括号访问
console.log(person['first name']); // 输出 Bob

// 下面的写法全是语法错误,根本跑不起来
// console.log(person.first name);
// console.log(person.last-name);

不过也不是完全没有“曲线救国”的办法,如果你特别想用点表示法的形式,可以试试这些技巧:

  • 最推荐:修改属性名:如果能控制对象的定义(比如是你自己写的代码),把带空格的属性改成驼峰式(比如firstName)或者下划线式(first_name),这样就能正常用person.firstName访问了,还符合JS的编码规范。
  • 用getter包装:如果属性名没法改(比如是第三方接口返回的数据),可以给对象添加一个getter方法,把带空格的属性映射成一个合法的标识符属性:
// 给person对象加一个getter
Object.defineProperty(person, 'firstName', {
  get() {
    return this['first name'];
  }
});

// 现在就能用点表示法啦
console.log(person.firstName); // 输出 Bob

不过要注意,这不是直接用点访问原来的'first name'属性,而是通过新的firstName属性间接获取的。

总的来说,带空格的属性名天生就和点表示法不兼容,方括号表示法才是专门用来处理这类特殊属性名的正确方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:16:10