Цепочка вызовов методов в JavaScript

В JavaScript иногда мы можем связать вызовы методов, например:

car.start().drive()

Это довольно удобно.

Вместо того, чтобы писать

car.start()
car.drive()

мы можем упростить в одну строку.

Это возможно, если каждый метод возвращает сам объект. Другими словами, реализация должна быть примерно такой:

const car = {
  start: function() {
    console.log('start')
    return this
  },
  drive: function() {
    console.log('drive')
    return this
  }
}

Важно отметить, что вы не можете использовать стрелочные функции, потому чтоthisв стрелочной функции, используемой как метод объекта, не привязан к экземпляру объекта.

Мне нравится все время использовать стрелочные функции, и это один из тех случаев, когда вы не можете.

Связанные вызовы методов хороши, когда вы не возвращаете набор значений из метода, иначе вам, очевидно, нужно назначить вызов метода переменной, и цепочка невозможна:

const result = car.start()
if (result) {
  car.drive()
}

Скачать мою бесплатнуюРуководство для начинающих по JavaScript


Больше руководств по js: