C#有一个非常棒的语法特性,对于一个期望委托类型的函数,你可以传入一个“方法组”,如下:
"string".Count (Char.IsWhiteSpace);
相对而言比较嘈杂的,
"string".Count (c => Char.IsWhiteSpace (c));
(编辑:更好的示例)。
我想在Javascript中做类似的事情,但匿名函数的语法更加嘈杂:
var name = "foobar".replace (/^\w/, function (c) { return c.toUpperCase (); });
我曾尝试过使用
call
和apply
的函数形式,并对其参数进行各种尝试和排列组合,但是传入的字符串参数(上面示例中的c
)显然不是toUpperCase
内部范围内的this
(在最好的情况下,我得到了一个不太有用的DOMWINDOWoobar
,在最坏的情况下则是TypeError
)。显然,我可以像上面那样包装函数,然后继续生活,但是否有一种类似于方法组应用或将该函数传递进去的方式,以便正确调用匹配字符上的函数?
!IsNullOrEmpty
)使用方法组。 - Kirk Woll