1

我有一个覆盖 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 = this.replace regexPattern, to # 不起作用)

4

1 回答 1

2

javascript/coffeescript 中的字符串是不可变的,一旦创建就无法更改。所以不可能让它自己修改,只能返回一个新值。但是,如果您愿意,您可以按照当前设置的方式链接您的函数,因为它确实返回一个值。

所以

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

应该可以正常工作

参考

MDN

与 C 等语言不同,JavaScript 字符串是不可变的。这意味着一旦创建了字符串,就无法修改它。但是,仍然可以基于对原始字符串的操作创建另一个字符串。

所以:

JavaScript 字符串是不可变的吗?我需要 JavaScript 中的“字符串生成器”吗?

于 2013-05-30T16:04:45.510 回答