Javascript中有一个技巧,可以从方法创建一个普通函数吗?
具体来说,我想将 String.prototype.toLowerCase 方法转换为接受字符串的函数。
显而易见的解决方案是:
var toLowerCase = function(s) {
return s.toLowerCase();
}
但我想知道是否有更短的方法来实现这一点。
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"