【问题标题】:CoffeeScript override base types, change valueCoffeeScript 覆盖基本类型,更改值
【发布时间】:2013-05-25 21:26:15
【问题描述】:

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

【问题讨论】:

  • 您为什么要这样做?为什么不接受它的工作原理?
  • 代码少,不关心赋值。我有很多函数 ovverides 主要类型,我想以这种方式使用:“some string”.func().func1().func2()
  • 但是默认函数可以链式,我不懂?

标签: javascript node.js express coffeescript


【解决方案1】:

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

所以

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

应该没问题

参考文献

MDN:

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

所以:

Are JavaScript strings immutable? Do I need a "string builder" in JavaScript?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-23
    • 2017-01-11
    • 2021-09-09
    • 2012-02-20
    • 2018-07-31
    • 1970-01-01
    • 2021-11-16
    • 2020-03-14
    相关资源
    最近更新 更多