【发布时间】:2015-11-14 20:19:45
【问题描述】:
我有这个电话:
function del(Model, modelName, model_id, req, res, next, cb) {
if(req.query.optimisticDelete){
optimisticDelete(arguments);
}
else{
pessimisticDelete(arguments);
}
}
问题当然是参数没有正确传递给optimisticDelete 和pessimisticDelete 函数。
在理想的 JS 世界中,这可能会起作用,但我很容易看出为什么它不起作用。
但这并不能消除我只是不想为每次调用输入所有参数的事实,事实上我也想省略 del 函数签名中的参数,所以这将是最理想的情况,虽然我需要对 req 对象的引用,但我现在缺少它:
function del() {
if(req.query.optimisticDelete){
optimisticDelete(arguments);
}
else{
pessimisticDelete(arguments);
}
}
当然,当参数被传递时,它似乎并没有神奇地分成单独的参数。
而且,这也不起作用:
function del(Model, modelName, model_id, req, res, next, cb) {
if(req.query.optimisticDelete){
optimisticDelete(Array.prototype.slice.call(arguments));
}
else{
pessimisticDelete(Array.prototype.slice.call(arguments));
}
}
如果你明白我想要做什么,请告诉我是否可能以及如何做,
【问题讨论】:
-
optimisticDelete.apply(null, Array.prototype.slice.call(arguments)); -
@BenTaber 在与
apply一起使用之前,您无需将arguments转换为数组。 -
阅读
arguments是什么将是这个问题developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 的一个很好的开始,然后搜索以前的问题将是最好的后续。
标签: javascript