将方法转换为函数

converting a method to a function

本文关键字:函数 转换 方法      更新时间:2023-09-26

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"