Объект, ссылающийся на свое собственное свойство при инициализации
Возможный дубликат:
Саморекламы в объявлениях литералов объектов
Можно ли это сделать? (очевидно, не в этом синтаксисе)
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
Ответы
Ответ 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);