Как создать свойства объекта с параметрами, не делая равенство для каждого - PullRequest
0 голосов
/ 05 июня 2019

У меня есть конструктор, который создает кабели со свойствами.Я хочу назначить параметры конструктора значениям свойств с тем же именем.

function SimpleCable(X, Y, totalradius, outerradius, innerradius, Type, name) {
  this.Center = [X, Y];
  this.TotalRadius = totalradius;
  this.ConductorOuterRadiusList = outerradius;
  this.ConductorInnerRadiusList = innerradius;
  this.Type = Type;
  this.Name = name;
}

Можно ли напрямую назначить параметры имени и типа без необходимости делать очевидное равенство?

Я думал о чем-то подобном, но это не работает.

function SimpleCable(X, Y, totalradius, outerradius, innerradius, Type, name) {
  this.Center = [X, Y];
  this.TotalRadius = totalradius;
  this.ConductorOuterRadiusList = outerradius;
  this.ConductorInnerRadiusList = innerradius;
  this.type;
  this.name;
}

спасибо!

Ответы [ 2 ]

1 голос
/ 05 июня 2019

Вы можете сделать это так:

class SimpleCable{
    constructor(options){
        Object.keys(options).forEach(name=>{
            this[name]=options[name];
        });
    }
}
new SimpleCable({center:[5,7], totalRadius:3});
1 голос
/ 05 июня 2019

Если вы хотите сократить инициализацию конструктора, то к одному способу создания свойств с тем же именем, что и аргументы, можно обратиться, используя Object.assign () и сокращенные имена свойств (но учтите, что это и функция ES6, поэтому рекомендуется проверить совместимость браузера перед его использованием), например:

function SimpleCable(X, Y, totalRadius, outerRadius, innerRadius, type, name)
{
    Object.assign(
      this,
      {center: [X, Y], totalRadius, outerRadius, innerRadius, type, name}
    );
}

Пример

function SimpleCable(X, Y, totalRadius, outerRadius, innerRadius, type, name)
{
    Object.assign(
      this,
      {center: [X, Y], totalRadius, outerRadius, innerRadius, type, name}
    );
}

let cable1 = new SimpleCable(1, 2, 4, 5, 4,"type1", "name1");
console.log("cable1 is:", cable1);

let cable2 = new SimpleCable(7, 6, 7, 3, 2, "type2", "name2");
console.log("cable2 is:", cable2);
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...