Javascript 如何从String.prototype更改String的值?
我写了这段代码:Javascript 如何从String.prototype更改String的值?,javascript,node.js,string,Javascript,Node.js,String,我写了这段代码: String.prototype.toJadenCase=函数(){ 返回此.split(/\s/).map(word=>word[0].toUpperCase()+word.substr(1)).join(“”) } let text='hello world' text.toJadenCase() 警报(文本)//hello world您不能更改字符串的值,字符串是不可变的。您所能做的就是创建一个新字符串并返回它: text = text.toJadenCase(
String.prototype.toJadenCase=函数(){
返回此.split(/\s/).map(word=>word[0].toUpperCase()+word.substr(1)).join(“”)
}
let text='hello world'
text.toJadenCase()
警报(文本)//hello world
您不能更改字符串的值,字符串是不可变的。您所能做的就是创建一个新字符串并返回它:
text = text.toJadenCase()
// ^^^^^^^
String.prototype.toJadenCase=函数(){
返回此.split(/\s/).map(word=>word[0].toUpperCase()+word.substr(1)).join(“”)
}
let text='hello world'
text=text.toJadenCase()
警报(文本)//hello world
您不能更改字符串的值,字符串是不可变的。您所能做的就是创建一个新字符串并返回它:
text = text.toJadenCase()
// ^^^^^^^
String.prototype.toJadenCase=函数(){
返回此.split(/\s/).map(word=>word[0].toUpperCase()+word.substr(1)).join(“”)
}
let text='hello world'
text=text.toJadenCase()
警报(文本)//hello world
将text.toJadenCase()
更改为let text='hello world.toJadenCase()
String.prototype.toJadenCase=function(){
返回此.split(/\s/).map(word=>word[0].toUpperCase()+word.substr(1)).join(“”)
}
let text='hello world'.toJadenCase()
console.log(text)
将text.toJadenCase()
更改为let text='hello world'.toJadenCase()
String.prototype.toJadenCase=function(){
返回此.split(/\s/).map(word=>word[0].toUpperCase()+word.substr(1)).join(“”)
}
let text='hello world'.toJadenCase()
console.log(text)
Since String.prototype.toJadenCase()返回一个值并且不更改原始字符串,text.toJadenCase()不执行任何操作。相反,请使用text=text.toJadenCase()
或类似的方法。我强烈建议您避免使用=
运算符指定原型属性。而是使用Object.defineProperty(String.prototype,'toJadenCase',{value:function(){/*…*/},enumerable:false})代码>。这避免了使用对。。。在
循环中。@Gershom-虽然公平地说,
对于字符串中的是一件相当狡猾的事情。;-)(但你使用defineProperty
是对的。通常你会让它可写、可配置,而不是可枚举。[它们都默认为false.])没错@T.J.Crowder!我想为中的对象背书对象。定义属性
而不背书字符串:-PSince string.prototype.toJadenCase()返回一个值并且不更改原始字符串,text。toJadenCase()不做任何操作。相反,请使用text=text.toJadenCase()
或类似的方法。我强烈建议您避免使用=
运算符指定原型属性。而是使用Object.defineProperty(String.prototype,'toJadenCase',{value:function(){/*…*/},enumerable:false})代码>。这避免了使用对。。。在
循环中。@Gershom-虽然公平地说,
对于字符串中的
是一件相当狡猾的事情。;-)(但你使用defineProperty
是对的。通常你会让它可写、可配置,而不是可枚举。[它们都默认为false.])没错@T.J.Crowder!我想为中的对象背书对象。定义属性
而不背书字符串:-P