我有一个覆盖CoffeeScript主要类型的函数,但是这个函数返回值,我想改变它自己。
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.replace regexPattern,#不起作用)
答案 0 :(得分:2)
javascript / coffeescript中的字符串是不可变的,一旦创建就无法更改。所以它不可能让它自己修改,只返回一个新值。但是,如果您愿意,可以将当前设置的函数链接起来,因为它确实会返回一个值。
所以
test = test.replaceAll(x,y).replaceAll(a,b)
应该可以正常工作
MDN:
与C语言不同,JavaScript字符串是不可变的。这意味着一旦创建了一个字符串,就无法对其进行修改。但是,仍然可以基于对原始字符串的操作创建另一个字符串。
SO:
Are JavaScript strings immutable? Do I need a "string builder" in JavaScript?