Преимущество заключается в ясности для разработчиков , что makeSound()
- это что-то конкретное от c до Dog
s.
Представьте, что вы не знаете определение функции .
Код:
makeSound(arg);
действителен с любым аргументом в javascript. Или нет, как это бывает (тогда это будет считаться undefined
).
Ничто не мешает разработчику позвонить
const myUnrelatedObject = { foo: "bar" };
makeSound(myUnrelatedObject); // compiles and returns no error (will just print "undefined")
, тогда как «объектно-ориентированный» способ выдаст ошибка времени выполнения
myUnrelatedObject.makeSound(); // TypeError: makeSound is not a function
Хорошие практики / шаблоны кода созданы для людей-разработчиков!
Но вы правы, это накладные расходы. И то же самое для многих языков, когда дело доходит до объектно-ориентированных шаблонов.
Если это действительно снижает производительность вашего приложения, вы можете и должны рассмотреть возможность обмена -выкл между памятью и удобочитаемостью (и, следовательно, стоимость обслуживания программного обеспечения).
Но в качестве «значения по умолчанию» я настоятельно рекомендую (для вас, ваших коллег и вашей компании) выбрать путь удобочитаемость и ремонтопригодность в первую очередь.
Кроме того, имейте в виду, что вам действительно следует измерять влияние на производительность в реальных ситуациях. JavaScript компиляторы / движок в настоящее время могут очень хорошо оптимизировать код, особенно если он написан обычным, предсказуемым образом.