Подтвердить что ты не робот

Объект, ссылающийся на свое собственное свойство при инициализации

Возможный дубликат:
Саморекламы в объявлениях литералов объектов

Можно ли это сделать? (очевидно, не в этом синтаксисе)

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'
};

Мне кажется, что эти значения undefined, я еще не определил их. Однако мне кажется, что было бы решение структурирования такого объекта, и c было бы условным на b

4b9b3361

Ответ 1

В качестве альтернативы вы можете использовать функцию самостоятельного запуска, чтобы дать вам аналогичное влияние на то, что вы ищете:

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

console.log(a.c);

Ответ 2

Не использовать объектную нотацию, но вы можете использовать ее для создания:

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