CoffeeScript覆盖基类型,更改值

时间:2013-05-30 10:34:12

标签: javascript node.js express coffeescript

我有一个覆盖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,#不起作用)

1 个答案:

答案 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?

相关问题