javascript对象如何创建_如何访问其属性【教程】

JavaScript对象创建首选字面量{},安全且语义清晰;属性访问需区分dot(合法标识符)与bracket(动态/特殊键);判断存在性时in查原型链、hasOwnProperty查自身、?.仅防错不判存在。

JavaScript 对象不需要“教程式创建”,关键在于理解不同场景下该用哪种方式,以及属性访问时的隐含行为差异。

对象字面量是最常用也最安全的创建方式

绝大多数情况直接用 {} 就够了,它创建的是普通对象,原型链干净,无副作用。

  • 适合静态数据、配置项、函数参数封装:const user = { name: "Alice", age: 30 };
  • 支持计算属性名和方法简写:const key = "id"; const obj = { [key]: 123, greet() { return "hi"; } };
  • 避免用 new Object() —— 冗余且易与构造函数混淆,语义不清

访问属性时 dot 和 bracket 语法不能混用

. 只能接合法标识符,[] 才能处理动态键、空格、数字开头等非常规属性名。

  • 正确:obj.nameobj["first name"]obj[variable]obj[123]
  • 错误:obj.123(语法错误)、obj.first name(解析为两个 token)
  • 注意:obj.undefinedKey 返回 undefined,但 obj[undefined] 等价于 obj["undefined"] —— 这是常见误判点

inhasOwnProperty 和可选链前先想清楚查什么

判断属性是否存在,三者查的范围和意图完全不同:

  • "prop" in obj:检查自身 + 原型链上是否有该属性(包括继承的 toString
  • obj.hasOwnProperty("prop"):只查自身(不推荐直接调用,应写成 Object.prototype.hasOwnProperty.call(obj, "prop") 防止 obj

    null 或覆盖了 hasOwnProperty
  • obj?.prop:只在 objnull/undefined 时取值,否则短路返回 undefined;它不判断属性是否存在,只防报错

属性访问看着简单,但实际出问题多发生在动态键、原型污染、或把 undefined 当作“不存在”来处理的地方。别假设对象结构永远如你所见。