在对象内引用对象

use*_*439 1 javascript oop object-literal

我正在编写一个javascript对象,并防止重复同一对象的别名

例如,在此处重复相同值的键:

var colours = {
    red: {
        rgb: "255,0,0",
        hex: "#FF0000"
    },
    brickred: {
        rgb: "255,0,0",
        hex: "#FF0000"
    }
};
Run Code Online (Sandbox Code Playgroud)

我尝试引用同一个对象,而不是重复:

var colours = {
    red: {
        rgb: "255,0,0",
        hex: "#FF0000"
    },
    brickred: this.red
};
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.我意识到(我认为)这是因为它指的是窗口对象而不是颜色.那么我试过:

var colours = {
    red: {
        rgb: "255,0,0",
        hex: "#FF0000"
    },
    brickred: colours.red
};
Run Code Online (Sandbox Code Playgroud)

但这仍然不起作用,我不明白为什么.我怎么解决这个问题?

NB示例不是很好,但基本上我有一个对象文字,并希望避免重复,我有不同的键具有相同的值.我也想知道为什么它不能用于好奇心

h2o*_*ooo 5

因为在创建时,对象(包括其red键)尚不存在.您可以在之后添加它:

var colours = {
    red: {
        rgb: "255,0,0",
        hex: "#FF0000"
    }
};

colours.brickred = colours.red;
Run Code Online (Sandbox Code Playgroud)