Увеличьте значения объекта в массиве с помощью функции - PullRequest
0 голосов
/ 23 октября 2019

Я начал работать с прототипами, но у меня много недостающих знаний.

В настоящее время у меня есть дело. Я создаю новый объект с массивом в качестве значения для сотрудников, каждый сотрудник получает свойство возраста. Я хотел бы расширить карту массива внутри моей функции, чтобы я мог выполнять итерацию и изменять значение с помощью определенной функции, называемой увеличенной возрастанием.

function increaseAge(amount) {
  this.age += amount;
}
function Administration(employees) {
  this.employees = employees;
  
  Array.prototype.increaseAge = function(amount) {}
}

const newAdministration = new Administration([{ age: 1}, { age: 1}]);
newAdministration.employees.increaseAge(1);

console.log(newAdministration)

Как я могу увеличить результат для каждого сотрудника на определенную величину, вызвав метод Increage? Где лучший источник знаний для освоения этого предмета JavaScript?

1 Ответ

0 голосов
/ 23 октября 2019

increaseAge должен быть не методом Array.prototype (который добавит его ко всем массивам), а Administration.prototype. Тогда вы можете использовать employees.forEach, как указано в моем комментарии:

function Administration(employees) {
  this.employees = employees;
}

Administration.prototype.increaseAge = function(amount) {
  this.employees.forEach(function(employee) {
    employee.age += amount;
  });
};

const newAdministration = new Administration([{ age: 1}, { age: 1}]);
newAdministration.increaseAge(1);

console.log(newAdministration)

Более современной версией этого было бы использование синтаксиса классов, который скрывает весь бизнес-прототип.

class Administration {
  constructor(employees) {
    this.employees = employees;
  }

  increaseAge(amount) {
    this.employees.forEach(employee => employee.age += amount);
  }
}

const newAdministration = new Administration([{ age: 1}, { age: 1}]);
newAdministration.increaseAge(1);

console.log(newAdministration)
...