gpt4 book ai didi

javascript - 获得未知数量的参数后,将它们传递给另一个函数

转载 作者:行者123 更新时间:2023-12-03 04:45:30 24 4
gpt4 key购买 nike

作为以下问题的后续,我需要将收到的参数发送到另一个函数。

Pass unknown number of arguments into javascript function

例如:

myObj.RunCall("callName", 1,2,3,4,5);
myObj.RunCall("anotherCall", 1);
myObj.RunCall("lastCall");

哪里

runCall = function(methodName)
{
// do something clever with methodName here, consider it 'used up'
console.log(methodName);

// using 'arguments' here will give me all the 'extra' args
var x = arguments.length;

// somehow extract all the extra args into local vars?
// assume there were 4 (there could be 0-100)

otherObj.DoIt(arg1, arg2, arg3, arg4); // here i need to send those "extra" args onwards
}

最佳答案

.apply() method允许您使用数组中的参数调用函数。所以:

otherObj.DoIt(1,2,3);
// is equivalent to
otherObj.DoIt.apply(otherObj, [1,2,3]);

(.apply() 的第一个参数是在您调用的函数中将成为 this 的对象。)

因此,您只需使用 arguments 中的值创建一个数组,您可以使用 .slice() 跳过第一个数组:

var runCall = function(methodName) {
console.log("In runCall() - methodName is " + methodName);

var extras = [].slice.call(arguments, 1);
otherObj.DoIt.apply(otherObj, extras);
}

// simple `otherObj.DoIt() for demo purposes:
var otherObj = { DoIt: function() { console.log("In DoIt()", arguments); }}

runCall("someMethod", 1,2,3);
runCall("someMethod", 'a', 'b');
runCall("someMethod");

关于javascript - 获得未知数量的参数后,将它们传递给另一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42886068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com