Javascript:如何使用apply方法传递参数数组,然后在被调用的函数中访问它
Javascript: How to use apply method to pass array of parameter and then access it inside the called function
我的Function.prototype.apply方法有问题。以下是我的测试来源:
function callMe(array){
var s = "";
s += array; //<--- I want to access the array's member here, eg. array[0], array[1], ...
return s;
}
var myArr = ["begin", 1, 2, 3, 4, "end"];
console.log(callMe.apply(this, myArr));
我想访问这些参数,但不想将函数调用中的每个参数指定为callMe.call(this, arg1, arg2, arg3)
。我想要的是callMe.apply(this, [arg1, arg2, arg3])
,然后在被调用的函数中,我将访问以下参数:
array[0] = "yeah";
array[1] = 200;
array[2] = 150;
array[3] = "fine";
上面代码的输出只是"开始",而我希望它是["begin", 1, 2, 3, 4, "end"]
。这里怎么了?因为正如我所知,Function.prototype.apply
方法与单独的参数callMe.apply(this, arrayOfArguments)
一起使用,但这不起作用。然而,方法call()
运行良好。例如,在上面的例子中,我只是用调用方法替换了apply方法,它会返回我想要的结果。我做错了什么?我想使用apply方法,而不是call方法。
这是因为Function.prototype.apply需要两个参数。第二个参数是一个参数数组,所以您的代码正在执行以下操作:
function callMe(array){
var s = "";
s += array;
return s;
}
var myArr = ["begin", 1, 2, 3, 4, "end"];
callMe.apply(this, myArr); //SAME AS callMe(myArr[0],myArr[1],myArr[2],myArr[3],myArr[4],myArr[5]);
因此,在这种情况下callMe.apply(this, myArr)
与callMe(myArr[0])
相同。
你必须这样做:
callMe.apply(this, [myArr]);
或者像前面的答案一样(ft1)。
相关文章:
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 选择值,然后只调用函数
- 如何用javascript调用函数,然后在滚动事件中调用该函数的特定实例
- 文件上传:检查文件格式,然后调用srvlet
- 如何使用javascript验证表单中的数据,然后调用php页面
- 剑道窗口还原在最小化然后还原时不调用调整大小事件
- 加载文件,然后调用回调函数
- Angular$http然后解析_.each中的多个调用
- 当调用.of()然后调用.on()时,Jquery是否可能将事件推迟
- 通过 AJAX 调用 PHP 文件,将 $_GET 变量传递到 MySQL 查询中,然后回显到响应中
- 运行一次函数,然后在 5 秒内禁止进一步调用
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- 在每个循环上完成异步调用,然后转到下一个节点 js
- 从异步调用返回数组,然后为数组的每个元素返回其他异步调用
- 如何运行一个调用某个函数的函数首先完成它,然后再调用下一个函数.正在创建回调函数
- Javascript Promise().然后防止在执行第一个调用之前重新调用该函数
- 谷歌分析调用然后用javascript重定向
- AngularJS工厂调用PHP,然后返回AngularJS
- 在同一个元素上调用c#然后调用js