Массовое присвоение нескольким объектам Javascript

Я действительно ищу рабочий ответ, похожий на деструктурирование (см. [ A , b ] = [ 1 , 2 ]; ment "rel =" nofollow "> https://developer.mozilla.org/en/docs/Web / JavaScript / Ссылка / Операторы / Destructuring_assignment )

Но я видел это [. Имя , возраст , is_male ] = [ 'John Doe' , 22 , правда ]; образец:

this.name = 'John Doe';
this.age = 22;
this.is_male = true;

Поэтому я надеялся, что есть способ сделать массовое присвоение для нескольких свойств объекта, например:

const [name, age, is_male] = ['John Doe', 22, true];
Object.assign(this, {name, age, is_male});

Чтобы сократить это:

Object.assign(this, 
  ([name, age, is_male]) => ({name, age, is_male}))(['John, Doe', 22, true]));

Любой вход был бы высоко оценен.

javascript,ecmascript-6,

2

Ответов: 3


3

Один вариант, отличный от совершенства:

assign

или

this

Ни один из них не выглядит лучше, чем три оператора присваивания.

То, что вы пытаетесь сделать, - это разрушить объект (в этом случае вы можете это assignсделать) this. Для этого были предложены различные синтаксисы, такие как

Object.assign(this,
  { [name, age, is_male] = ['John Doe', 22, true] });

а также

Object.assign(this,
  ['John Doe', 22, true].{name, age, is_male});

но они не получили большой тяги к процессу языковых стандартов.


2

Object.assign сделают это.

var obj = {
  foo: 1,
  copy: function() {
    Object.assign(this, {
      name: "John Doe",
      age: 22,
      is_male: true
    });
  }
}

obj.copy();
console.log(obj);


0

Вы не можете сделать

this.[...

так как это даст вам

Uncaught SyntaxError: Неожиданный токен [

но вы можете использовать []s для присвоения this.значений:

[this.name, this.age, this.is_male] = ['John Doe', 22, true];
JavaScript, ECMAScript-6,
Похожие вопросы