Javascript多次调用函数的速记

ric*_*oni 3 javascript jquery function

我一直在寻找一段时间,似乎无法找到答案.我不知道是否有可能,但我只是好奇.

假设我有一个简单的功能:
function foo(name){alert(name);}

还假设我必须使用几个不同的名称多次调用此函数:
foo("bar"); foo("blahh"); foo("myName"); foo("yourName");

这是否有简写?

例如:foo("bar":"blahh":"myName":"yourName");

这个例子很简单,但在实践中,委托人可能非常有用.如果有某种jQuery解决方案,我也会对此持开放态度.

Cla*_*diu 6

您可以将参数放在一个数组中并迭代它:

params = ["bar", "blahh", "myName", "yourName"];
for (var i=0; i<params.length; i++) 
    foo(params[i]);
Run Code Online (Sandbox Code Playgroud)

如果func采用多个args,则可以将数组放入数组中:

params = [[1,"one"], [2,"two"], [5,"five"]];
for (var i=0; i<params.length; i++) 
    foobar(params[i][0], params[i][1]);
Run Code Online (Sandbox Code Playgroud)

要么

params = [[1,"one"], [2,"two"], [5,"five"]];
for (var i=0; i<params.length; i++) 
    foobar.apply(null, params[i]);
Run Code Online (Sandbox Code Playgroud)


c-s*_*ile 5

作为其他答案的概括:

Function.prototype.sequence = function(vals) {
   for (var i = 0; i < vals.length; ++i) this(vals[i]);
}
Run Code Online (Sandbox Code Playgroud)

这会将sequence方法添加到所有函数中.所以你可以使用它与任何功能:

function foo() {....}

foo.sequence(["bar","blah","myName","yourName"]);
Run Code Online (Sandbox Code Playgroud)