您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

JavaScript趣题:形参和实参的映射

2024/3/4 20:06:54发布24次查看
作为对函数功能的扩展,你需要在一个函数被调用时,在它的形参和实参之间,建立正确的映射关系。
先来看下面的例子:
function func1(arg1, arg2) { ... } var map = createargumentmap(func1,'valueofarg1', 'valueofarg2'); console.log(map['arg1']); // writes 'valueofarg1' console.log(map['arg2']); // writes 'valueofarg2'
这个映射函数接收一个函数对象作为第一个参数,以及一个长度未知的实参列表,你得在这个函数对象的形参和实参列表间建立映射,用一个关联数组表示,并返回。
实参列表和函数形参定义的顺序是一样的,而且都是有效合法的参数。
这个题目在于建立形参和实参的映射,那么,我们就先获得函数对象的tostring()字符串形式,并且截取它的形参列表。
紧接着,因为实参列表长度未知,那么利用array.prototype.slice方法,设置它的上下文为arguments对象,从索引1处开始截取实参,获得实参列表的数组形式。
最后,以实参列表为基准,建立关联数组,形参为key,实参为value,并且返回关联数组。
这样,这个参数映射函数就完成了。
string.prototype.trim = function(){ return this.replace(/(^\s*)|(\s*$)/g, ""); }; var findargs = function(funcstr){ var bracket1 = funcstr.indexof("("); var bracket2 = funcstr.indexof(")"); var argsstr = funcstr.slice(bracket1+1,bracket2); var args = argsstr.split(","); return args.map(function(e){ return e.trim(); }); }; function createargumentmap(func) { var args = findargs(func.tostring()); var realargs = array.prototype.slice.call(arguments,1); var map = {}; for(var i=0;i<realargs.length;i++){ map[args[i]] = realargs[i]; } return map; }
以上就是javascript趣题:形参和实参的映射的内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product