首页 > 函数第一个参数为一个对象(后面参数0个或多个),返回对应参数!

函数第一个参数为一个对象(后面参数0个或多个),返回对应参数!

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"]就可以调用了。

【热门文章】
【热门文章】