Как уже отмечалось, вы могли бы использовать Object.assign
, но помните, что он присваивает все (собственных, перечисляемых) свойств возвращаемого объекта foo
.
Чтобы избежать этого, вы можете использовать деструктуризацию:
const {x, y} = foo(arg);
this.x = x;
this.y = y;
Это мало что дает, но ...
Вы можете комбинировать подходы:
const {x, y} = foo(arg);
Object.assign(this, {x, y});
... за счет (в теории) временного размещения объекта. (Я говорю «в теории», поскольку движок JavaScript может оптимизировать его. Но я не знаю, как это будет.)
Именно для таких ситуаций было выдвинуто это предложение . К сожалению, это не получило никакой связи с комитетом. Если бы это предложение было реализовано, вы могли бы сделать это:
// NOT STANDARD JAVASCRIPT (the proposal hasn't even been accepted for Stage 0)
this.{x, y} = foo(arg);