明确定义后,为什么会得到未定义的“ toUpperCase”?

时间:2019-04-04 14:58:10

标签: javascript arrays string

我正在为有关字符串原型方法的问题而痛苦。

我想创建一个方法来驼峰处理任何字符串。

这是我当前的代码:

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

当我console.log(word [0] .toUpperCase())时,我得到每个单词的大写字母,但是当我尝试将转换应用于我的“单词”时,出现错误“无法读取属性' toUpperCase'的定义为“

wtf吗?

1 个答案:

答案 0 :(得分:4)

解决字符串不变性的一种方法是,仅返回具有所需内容的新字符串,如下所示:

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())