-4

假设我有一个这种形式的 JavaScript 对象:

var myJsObject = 
{
    A.b: 1
    A.c: 2
}

我如何获得 let's say 的价值A.c

我试过:

var value = myJsObject['A.c']

但这给了我错误Uncaught TypeError: Cannot set property 'A.c' of undefined

谢谢

4

3 回答 3

4

您不需要“对象”关键字,应该引用属性。这在我的控制台中有效:

var myJsObject = { 'A.b': 1, 'A.c': 2 };
var value = myJsObject['A.c'];
console.log(value); // 2
于 2012-11-30T18:04:37.000 回答
1

你不能链接点符号。这应该有效:

var myJsObject = {
    A: {
      b: 1,
      c: 2
    }
}

或者,如果您想拥有类似的属性名称A.b,则需要将其引用,如果名称包含特殊字符:

var myJsObject = 
{
    'A b': 1,
    'A.c': 2
}
于 2012-11-30T18:08:52.583 回答
1

编码

var myJsObject = 
{
    A.b: 1
}

产生语法错误,因为必须引用句点,因为它们在语言中具有特殊含义。JavaScript 解释器读取A.b为尝试bA对象获取属性,但它需要一个标识符名称,而不是一个操作。考虑一个类似的例子:

var myJsObject = 
{
    foo-bar: 1
}

在这里,连字符被读取为减法运算符,并且还会产生语法错误。

相反,请使用带引号的属性名称:

var myJsObject = 
{
    "A.b": 1,
    "A.c": 2
}

"A.b": 1(此外,您的代码在我添加的行之后也缺少逗号。)

于 2012-11-30T18:10:38.170 回答