在JavaScript中,引用和未引用的对象属性(通常称为"点表示法"和"方括号表示法")在功能上等价,但存在以下关键区别:
obj.property
obj["property"]
两者均可访问/修改对象属性,但方括号表示法允许动态属性名和非常规标识符。
| 对比项 | 点表示法 (obj.prop
) | 方括号表示法 (obj["prop"]
) |
|------------------|------------------------------------------|----------------------------------------|
| 属性名类型 | 必须是有效标识符(如字母、_
、$
开头) | 可以是任意字符串或表达式 |
| 动态访问 | 不支持 | 支持动态计算属性名(如变量、表达式) |
| 特殊字符 | 无法直接访问(如 obj.my-prop
会报错) | 支持(如 obj["my-prop"]
) |
| 性能 | 略快(引擎静态优化) | 略慢(需运行时解析) |
const user = { name: "Alice" };
console.log(user.name); // 推荐
const obj = { "user name": "Bob" };
console.log(obj.user name); // 语法错误
解决:必须使用方括号表示法
console.log(obj["user name"]); // 正确
const prop = "color";
const car = { color: "red" };
console.log(car[prop]); // 正确:"red"(访问变量prop的值)
console.log(car["prop"]); // undefined(尝试访问字面量属性"prop")
没有搜到相关的文章