@ivandao

Можно ли при объявлении объекта сослаться на другие его поля?

Например:
a = { 
  b : 1, 
  b1 : this.b 
}

Есть да, то как?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Тиражируемое значение в переменную заранее:
const value = 1 + 1 * 1;
var a = {
  b: value,
  b1: value
}

Вопрос возник из-за чего: некрасиво как-то в коде выглядит повтор, или не хочется одну строку добавить, как предложил dollar ? Или есть задача обработки назначаемых данных – видели сеттеры / геттеры?
// хочется так? (но нельзя!)
var a = {
  b: 1,
  c: this.b * 10
}

// тогда можно так:
var a = {
  get c() { return this.b * 10; }
}
a.b = 1;

a.c // 10
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dollar
@dollar
Делай добро и бросай его в воду.
Простой способ:
Код
var a = { 
  b : 1, 
  b1 : undefined,
};
a.b1 = a.b;

Извращение:
Код
var a = { 
  b : 1, 
  b1 : "this.b",
};
Prepare(a);

function Prepare(o) {
	for(let k in o) {
		if (typeof o[k] !== 'string') continue;
		if (o[k].substr(0,5) !== 'this.') continue;
		let key = o[k].substr(5);
		o[k] = o[key];
	}
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы