Javascript 将方法转换为函数

Javascript 将方法转换为函数,javascript,Javascript,Javascript中有没有一个技巧,从一个方法创建一个普通函数 具体来说,我想将String.prototype.toLowerCase方法转换为接受字符串的函数 显而易见的解决办法是: var toLowerCase = function(s) { return s.toLowerCase(); } 但我想知道是否有一种更短的方法来实现这一点。您可以创建一个函数,将方法转换为函数: var converter = function(method) { return func

Javascript中有没有一个技巧,从一个方法创建一个普通函数

具体来说,我想将String.prototype.toLowerCase方法转换为接受字符串的函数

显而易见的解决办法是:

var toLowerCase = function(s) {
    return s.toLowerCase();
}

但我想知道是否有一种更短的方法来实现这一点。

您可以创建一个函数,将方法转换为函数:

var converter = function(method) {
    return function(instance) {
        return method.call(instance);
    };
};
var toLowerCase = converter(String.prototype.toLowerCase);
如果要传递其他参数,则可以使用以下版本:

var converter = function(method) {
    return function() {
        var args = Array.prototype.slice.call(arguments),
            instance = args.shift()
        return method.apply(instance, args);
    };
};
例如:

> var replace = converter(String.prototype.replace);
> replace("TEST", "T", "X");
"XESX"

你为什么要这样做?为什么不直接使用s.toLowerCase@Sudhir可能是因为他想将函数作为参数传递给另一个需要特定签名的函数。OP,你为什么不接受Freakih的答案?如果它不适合你,请更好地解释你的需要。我要求用一个较短的方法来实现这一点,请看我的问题。虽然畸形的解决方案总体上是好的,但在这个特殊情况下,它并不短。无论如何,我接受了这个答案,因为它是最好的: