对象在初始化时引用其自己的属性

Object referencing its own property on initialization

本文关键字:自己的 属性 引用 初始化 对象      更新时间:2023-09-26

可能重复:
对象文字/初始化程序中的自引用

这能做到吗 (显然不是这种语法(

var a = {
    b : 10,
    c : this.b * 2 // returns 'undefined'
};

我也试过

var a = {
    b : 10,
    c : a.b * 2 // throws error 'a is undefined'
};

var a = {
    b : 10,
    c : b * 2 // throws error 'b is undefined'
};

对我来说,这些值是未定义的,这是有道理的,我还没有完成对它们的定义。然而,在我看来,有一种解决方案可以构造这样的对象,并使cb 为条件

或者,您可以使用自启动函数来给您提供与您想要的类似的影响:

var a = (function() {
    var b = 10;
    return {
        b:b,
        c:b*2
    }
})();
console.log(a.c);

不使用对象文字表示法,但您可以使用函数来创建它:

function Structure(value) {
    this.b = value;
    this.c = 2 * value;
}
var a = new Structure(10);

function makeStructure(value) {
    return {b:value, c:2*value};
}
var a = makeStructure(10);