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

时间:2011-09-15 15:27:37

标签: javascript object

  

可能重复:
  Self-references in object literals / initializers

可以这样做吗? (显然不在此语法中)

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为条件

2 个答案:

答案 0 :(得分:12)

或者,您可以使用自启动功能为您提供与您要查找的内容类似的效果:

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

console.log(a.c);

答案 1 :(得分:1)

不使用对象文字符号,但您可以使用函数创建它:

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);