C# 有一个很棒的语法特性,对于需要委托(delegate)类型的函数,您可以传入一个“方法组”,如下所示:
"string".Count (Char.IsWhiteSpace);
而不是(相对而言)嘈杂:
"string".Count (c => Char.IsWhiteSpace (c));
(编辑:更好的例子)。
我想在 Javascript 中做一些类似的事情,它对匿名函数有更嘈杂的语法:
var name = "foobar".replace (/^\w/, function (c) { return c.toUpperCase (); });
我使用 call
和 apply< 对
,但传入的字符串参数(上例中的 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/