使用 [ ] 表示法访问 javaScript 对象

Accessing javaScript object using [ ] notation

本文关键字:访问 javaScript 对象 表示 使用      更新时间:2023-09-26

下面有什么区别:

var ourDog = {
    "name": "Camper"
};

var ourDog = {
    name: "Camper",
};

以及它如何在这两种情况下都返回露营者ourDog["name"]

当我们使用[]符号访问对象属性时,幕后是否发生了任何转换?

检查规格

属性定义 : 属性名称 : 赋值表达式

  1. 返回属性名称的 PropName。

规范的这一部分建议属性名称及其值的正式语法。

此外,在此之前,规范的这一部分建议可以literalPropertyName属性名称,不需要将其描述为字符串

属性名称[产量] :

文字属性名称

ComputedPropertyName[?产量]

文字属性名称 :

标识符名称

字符串文字

数字文字

这就是为什么您将在name"name"中获得相同的结果。

但是,如果属性名称为 first name ,则需要使用该字符串,否则将出现编译错误,因为在属性名称之后需要冒号:

//correct syntax
var ourDog = {
    "first name": "Camper"
};
//incorrect syntax
var ourDog = {
    first name: "Camper" //since after first there is no colon so there will be  compilation error
};

> http://ecma-international.org/ecma-262/6.0/#sec-object-initializer

属性名称只能是标识符名称(即标识符 + 保留字)、字符串文本或数字文本。

您不能使用带有点表示法的数字文字,但括号表示法有效:

var ourDog = {
    123: "Camper",
};

输出

ourDog[123] // Camper

ourDog.123 // SyntaxError

欲了解更多信息,请查看此内容

属性名称必须是字符串。这意味着非字符串对象不能用作对象中的键。任何非字符串对象(包括数字)都通过 toString 方法类型转换为字符串

var object = {};
object['1'] = 'value';
console.log(object[1]);

这将输出"值",因为 1 被类型转换为"1"。

示例来自 MDN