Как избежать ключевых слов `this` и `new` в JavaScript?

Привет всем! У меня есть код на JavaScript, который делает первую букву каждого слова заглавной. Но я хочу переписать его без использования this и new. Слышал, что Дуглас Крокфорд считает их вредными. Вот примерно как выглядит мой код сейчас:

function заглавныеБуквы(строка) {
  function обработатьПервуюБукву(буква) {
    return буква.toUpperCase();
  }
  
  function обработатьОстальныеБуквы(остаток) {
    return остаток.split(' ').map(слово => 
      слово[0].toUpperCase() + слово.slice(1)
    ).join(' ');
  }
  
  return обработатьПервуюБукву(строка[0]) + обработатьОстальныеБуквы(строка.slice(1));
}

console.log(заглавныеБуквы('учимся крутым штукам'));

Как лучше переписать этот код, чтобы избавиться от this и new? Буду благодарен за любые советы!

Твой код уже не использует this и new, так что тут все окей. Но если хочешь сделать его еще функциональнее, можно попробовать так:

const заглавныеБуквы = строка =>
строка.replace(/\b\w/g, буква => буква.toUpperCase());

Это решение использует регулярку для поиска первых букв слов. Оно короче и, возможно, чуть производительнее. Но честно, твой вариант тоже вполне рабочий, так что выбирай то, что тебе больше нравится и кажется понятнее.

слушай, а может не стоит заморачиваться насчет this и new? в твоем коде их и так нет. главное чтобы код работал и был понятным. я бы предложил такой вариант:

const заглавныеБуквы = строка =>
строка.toLowerCase().replace(/(^|\s)\S/g, с => с.toUpperCase());

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

А зачем вообще избегать this и new? В твоем коде их и так нет. Крокфорд, конечно, авторитет, но не стоит слепо следовать чужим советам. Главное - писать понятный код. Твоя функция вполне рабочая, хотя можно немного упростить:

function заглавныеБуквы(строка) {
  return строка.split(' ')
    .map(слово => слово[0].toUpperCase() + слово.slice(1))
    .join(' ');
}

Так короче и яснее, как по мне. А ты как думаешь?