函数第一个参数为一个对象(后面参数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”]就可以调用了。

  • vue v-for循环中取值问题
  • 求教各位,本地HTML页面怎么在DIV中嵌套服务器上的页面内容?不用iframe。
  • 一个诡异的问题,关于NaN的?
  • 提个问题:控制div最多显示两行文字,超出时有省略号和更多按钮一般怎么做?如图
  • js动态赋值问题
  • 这个上滑过程中好像定时器冲突了,怎么解决
  • 腾讯x5 js端怎么接受值
  • Electron使用Anguar编写渲染线程的问题
  • 通用空间的mp4文件在网页播放时太慢怎么解决?
  • 公司一个年会抽奖程序的修改?
  • vue router兼容ie8不,求个demo