javascript - 函数第一个参数为一个对象(后面参数0个或多个),返回对应参数!
ringa_lee
ringa_lee 2017-04-11 11:54:14
[JavaScript讨论组]

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'
ringa_lee
ringa_lee

ringa_lee

全部回复(2)
巴扎黑

灵感来自于伟大的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"]就可以调用了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号