Я пытаюсь создать объект javascript, который вычисляет различные значения для свойств, установленных на нем. Я составил этот простой пример того, что я пытаюсь достичь: JSFIDDLEСвойства объекта Javascript, рассчитанные (на лету) из других свойств объекта
var obj = {};
obj.a = 2;
obj.b = 5;
obj.avg = "(obj.a + obj.b)/2";
obj.rounded = "Math.floor(eval(obj.avg))";
console.log("rounded avg: " + eval(obj.rounded));
//simulate changing properties
obj.a = Math.floor(Math.random() * 10);
obj.b = Math.floor(Math.random() * 10);
console.log("rounded avg: " + eval(obj.rounded));
Приведенный выше код в настоящее время добивается того, чего я хочу (используя стандартный набор значений, как «а» и «б» вычислить «среднюю» затем используя «avg» во втором вычислении «округлены»).
Есть ли лучший способ достичь этого (в идеале без вызовов eval()
всякий раз, когда вычисленное свойство ссылается на другое свойство).
Я хотел бы, чтобы рассчитанные свойства действовали как функции (вычисляли их значение, когда они ссылаются), а не вычисляли их значение изначально и не меняли - я бы хотел, чтобы не использовать ()
для вызова функций (так что я могу ссылаться как на простые значения, так и на рассчитанные значения одинаково - просто по их имени свойства).
Конечно, но ОП сказал: «Мне бы хотелось избежать использования() для вызова функций». –
@torazaburo Я был «добираюсь» до этого :-) –
@RobbyCornelissen Ha, теперь я * 'get' * it -" получение "... – Xufox