c# - "Method group"- Javascript 中的语法?

标签 c# javascript

C# 有一个很棒的语法特性,对于需要委托(delegate)类型的函数,您可以传入一个“方法组”,如下所示:

"string".Count (Char.IsWhiteSpace);

而不是(相对而言)嘈杂:

"string".Count (c => Char.IsWhiteSpace (c));

(编辑:更好的例子)。

我想在 Javascript 中做一些类似的事情,它对匿名函数有更嘈杂的语法:

var name = "foobar".replace (/^\w/, function (c) { return c.toUpperCase (); });

我使用 callapply< 对 String.prototype.replace 的函数形式的参数进行了各种尝试和排列,但传入的字符串参数(上例中的 c)显然不是 toUpperCase 范围内的 this(我'在最好的情况下,我最终会得到一个没有帮助的 DOMWINDOWoobar,在最坏的情况下会得到一个 TypeError

很明显,我可以像上面那样包装函数,生活可以继续,但是有没有办法做类似于方法组应用程序的事情,或者传递那个函数以便在匹配的字符上正确调用它?

最佳答案

你可以指向属于String的函数本身

"foobar".replace (/^\w/, String.toUpperCase);

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/toUpperCase

更新:仅适用于 FF

关于c# - "Method group"- Javascript 中的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4997655/

相关文章:

c# - 日期时间c#解析

c# - 如何在 web api 中发送两个对象作为响应消息和响应代码

javascript - 如何动态地向类元素添加 Font Awesome 图标?

javascript - 有没有更好的方法在没有输入框的情况下进行输入后进行页面重定向?

javascript - 如何将我的验证函数变成 ajax 方法?

c# - 我们可以在不使用客户端 key 的情况下从 azure 获取 key 值吗?

c# - 将文本框中的数字转换为浮点 C#

c# - 在C#中使用Lambda确定非相等属性值

Opera 中的 JavaScript 作用域问题?

javascript - 附加 Div 标签无法正常工作