CoffeeScript覆盖基types,更改值

我有一个重写CoffeeScript中的主要types的函数,但是这个函数的返回值,我想改变自己。

String::replaceAll = (what, to) -> regexPattern = new RegExp(what, "g") this.replace regexPattern, to 

现在我必须这样使用它:

 test = test.replaceAll "sth", "sth2" 

我想用这种方式来使用它:

 test.replaceAll "sth", "sth2" # only, without assigning 

(this = this.replace regexPattern,为#不起作用)

javascript / coffeescript中的string是不可变的,一旦创build就无法更改。 所以它不可能自己修改,只能返回一个新的值。 但是,如果你愿意的话,你可以像你现在设置的那样链接你的函数,因为它返回一个值。

所以

 test = test.replaceAll(x,y).replaceAll(a,b) 

应该工作正常

参考

MDN :

与像C这样的语言不同,JavaScriptstring是不可变的。 这意味着一旦创build了一个string,就不可能修改它。 但是,仍然可以根据原始string上的操作创build另一个string。

所以:

JavaScriptstring是不可变的吗? 我需要JavaScript中的“string生成器”吗?