Композиция - это паттерн проектирования, который позволяет создавать более сложные объекты из простых компонентов. В контексте JavaScript композиция - это способ создания объектов, которые состоят из других объектов, используя их функциональность для создания более сложных объектов. Этот подход позволяет создавать более гибкие и модульные программы, в которых объекты могут быть переиспользованы в разных контекстах.

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

Вот пример реализации композиции в JavaScript:

function createPerson(name) {
  const state = {
    name: name,
    age: null,
    gender: null,
  };
 
  function setAge(age) {
    state.age = age;
  }
 
  function setGender(gender) {
    state.gender = gender;
  }
 
  function getState() {
    return state;
  }
 
  return {
    setAge,
    setGender,
    getState,
  };
}
 
function createEmployee(name, position) {
  const person = createPerson(name);
  const state = {
    position: position
  };
 
  function setPosition(position) {
    state.position = position;
  }
 
  function getState() {
    return {
      ...person.getState(),
      ...state
    };
  }
 
  return {
    ...person,
    setPosition,
    getState,
  };
}
 
const employee = createEmployee('John', 'Manager');
employee.setAge(30);
employee.setGender('Male');
employee.setPosition('Senior Manager');
console.log(employee.getState());

В этом примере мы создаем функцию createPerson, которая возвращает объект с методами setAgesetGender и getState. Затем мы создаем функцию createEmployee, которая создает объект с помощью функции createPerson и добавляет к нему метод setPosition. Мы также переопределяем метод getState, чтобы он возвращал объект, содержащий свойства из объекта person и объекта state.


Назад