Почему я получаю 'toUpperCase' из неопределенного, когда оно четко определено? - PullRequest
1 голос
/ 04 апреля 2019

Мне больно от проблемы с методом-прототипом строки.

Я хочу создать метод camelCase для любой строки.

Вот мой текущий код:

String.prototype.camelCase=function(){
    let wordsArray = this.split(" ")
    wordsArray.forEach((word)=>{
      word[0] == word[0].toUpperCase()
    })
}

Когда я console.log (word [0] .toUpperCase ()) я получаю первую букву каждого слова в верхнем регистре, но когда я пытаюсь применить преобразование к своему «слову», я получаю сообщение об ошибке «Не удается прочитать свойство» toUpperCase 'of undefined "

wtf?

1 Ответ

4 голосов
/ 04 апреля 2019

Чтобы обойти неизменность строк, можно просто вернуть новую строку с требуемым содержимым, например, так:

String.prototype.camelCase = function() {
    return this
        .split(" ")
        .map(w => {
          if (!w) return w
          return w[0].toUpperCase()+w.substring(1)
        })
        .join(' ')
}

console.log('hello world'.camelCase())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...