使用 [ ] 表示法访问 javaScript 对象
Accessing javaScript object using [ ] notation
下面有什么区别:
var ourDog = {
"name": "Camper"
};
和
var ourDog = {
name: "Camper",
};
以及它如何在这两种情况下都返回露营者ourDog["name"]
。
当我们使用[]
符号访问对象属性时,幕后是否发生了任何转换?
检查规格
属性定义 : 属性名称 : 赋值表达式
- 返回属性名称的 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
相关文章:
- 如何从对象的原型方法访问JavaScript对象属性
- 如何在不知道关键字的情况下访问javascript对象值
- 可以't访问JavaScript函数范围中的变量
- 使用XPath样式访问Javascript JSON对象属性
- 访问javascript文件输入变量的值
- 如何访问Javascript代码中的rails变量
- jQuery.ajax()访问javascript循环中的beforeEnd局部变量
- 从Jade访问javascript库
- PHP/AAJAX-使用PHP中的$_FILES访问javascript文件数组
- 访问Javascript对象-Node.js的作用域问题
- 从HTML中的另一个文件访问javascript方法
- 存在其他参数时访问Javascript事件
- 如何使用Perl访问JavaScript驱动的网页内容
- 访问JavaScript对象中的方法
- 访问 JavaScript 数组值
- 如何在 setinterval 函数中访问 javascript 数组值
- 在 Java 中访问 JavaScript 对象的字段
- 使用传递给函数的值访问 JavaScript 数组
- 使用相同的名称访问Javascript属性
- 无法访问javascript中二维数组中的第二个字段