createArgumentMap
函数应该怎么写,最后相当于是输入map['arg1']
,输出valueOfArg1
例子如下:
function func1(arg1, arg2) { ... }
var map = createArgumentMap(func1,'valueOfArg1', 'valueOfArg2');
console.log(map['arg1']); // writes 'valueOfArg1'
console.log(map['arg2']); // writes 'valueOfArg2'
灵感来自于伟大的AngularJS
function func1(arg1, arg2) {
}
var createArgumentMap = function(func) {
var restArgs = Array.prototype.slice.call(arguments, 1);
return func
.toString()
.match(/^[^\(]*\(\s*([^\)]*)\)/m)[1]
.split(',')
.map(name => name.trim())
.reduce(function(previous, key, i) {
return (previous[key] = restArgs[i], previous);
}, {});
};
var mappping = createArgumentMap(func1, 'nihao', 'fucking');
console.log(mappping); //{ arg1: 'nihao', arg2: 'fucking' }
@leftstick 的是正解,返回的是集合,你直接mapping["arg1"]就可以调用了。