在Javascript中定义对象文字时如何引用对象属性?

时间:2015-09-22 21:11:47

标签: javascript

我正在努力做到以下几点:

var Colors = {
    'BLUE    ': 1,
    'RED'    : 2,
    'YELLOW' : 3
};

var Boxes = {
    Colors.BLUE   : 5,
    Colors.RED    : 1,
    Colors.YELLOW : 0
};

console.log(Boxes);

但是,我收到以下错误:

Uncaught SyntaxError: Unexpected token .

在定义Colors时,如何引用Boxes对象?

我想仅使用对象文字语法来完成此操作。感谢。

2 个答案:

答案 0 :(得分:2)

您必须更详细并使用括号表示法来定义变量属性名称:

var Colors = {
    'BLUE'   : 1,
    'RED'    : 2,
    'YELLOW' : 3
};

var Boxes = {};
Boxes[Colors.BLUE] = 5;
Boxes[Colors.RED] = 1;
Boxes[Colors.YELLOW] = 0;

console.log(Boxes);

在ES2015中,您可以使用表达式初始化对象键,这称为Computed property names

var Boxes = {
    [Colors.BLUE]   : 5,
    [Colors.RED]    : 1,
    [Colors.YELLOW] : 0
};

答案 1 :(得分:0)

您可以将Object定义为另一个Object的属性,例如:

var Colors = {
    BLUE: 1,
    RED: 2,
    YELLOW : 3
};

var Boxes = {
    Colors: Colors
}

console.log(Boxes);

或者您可以简单地将整个对象定义为:

var Boxes = {
    Colors: {
        BLUE: 1,
        RED: 2,
        YELLOW : 3
    }
}

console.log(Boxes);

应该得到你需要的结果。