JavaScript-从字符串中创建多个未知参数并将其传递给函数
JavaScript - Create and Pass Multiple Amount of Unknown Arguments from a String to a Function
我正在创建一个处理路由/哈希的JavaScript类。
我想知道是否有一种方法可以将window.location.hash字符串拆分为一组参数,然后传递给另一个函数。
示例散列:
var hash = "#some/place?id=42&&name=Brian";
当然,我可以拆分字符串并获得参数及其值,但我如何将这些参数传递给函数,类似于(给定前面的哈希)调用:
// ID, NAME
someFunction(42, "Brian");
我们必须考虑到,我们不知道将要处理的争论的确切数量。我们所知道的是,散列中的参数与函数期望的顺序相同;例如:在前面的例子中,我们的函数将首先接收:ID,然后是NAME,然后是我们传递的任何其他参数。
所以。。。
var hash = "#some/place?id=42&&name=Brian";
// ID, NAME
someFunction(42, "Brian");
或者。。。
var hash = "#some/place?id=42&&age=33&&name=Brian";
// ID, AGE, NAME
someFunction(42, 33, "Brian");
等等。。。
您可以在以下函数中捕获参数:
var x = function(){
x = arguments&&arguments[0];
y= arguments&&arguments[1];
console.log(x+y);
};
x(3,4);
7
您可以使用Function.protype.apply()方法为函数提供参数列表。第一个参数设置函数的"this"绑定,因此对于不在对象范围内操作的函数,可以将null作为第一个参数传递。
var hash = "#some/place?id=42&&age=33&&name=Brian";
var getParams = function(hash){
var parameters = [ ["id=","&&age"],["age=","&&name"],["name=",null] ];
return parameters.map(function(p){
var re1 = new RegExp(p[0]);
var re2 = p[1]? new RegExp(p[1]): null;
var start = hash.match(re1)['index'] + p[0].length;
var end = re2 ? hash.match(re2)["index"]: hash.length;
return hash.slice(start,end);
})
};
function interpreter(id,age,name,kwargs){
console.log( "id: "+id + " age: "+ age+ " name: "+name+ " kwargs: "+ kwargs );
}
interpreter.apply( null, getParams(hash) ) ;
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数