【发布时间】:2015-04-24 16:27:03
【问题描述】:
我正在尝试重新实施申请练习。我想出了一个天真的解决方案,通过在对象上临时装饰该函数然后将其删除来在对象的上下文中执行函数。但是当我调用它时,我无法弄清楚如何传递 fn 逗号分隔的参数,因为它们是数组形式。
如何在不应用、调用或绑定的情况下将数组转换为逗号分隔的变量?
function apply(fn, context, args) {
context.fn = fn;
var result = context.fn();
delete context.fn;
return result;
}
function add(a,b) {
return a + b + this.num;
}
console.log(apply(add, {num: 10}, [3, 4])); //17
编辑:
我不希望我的值被拆分成一个字符串。我希望我的值分成comma separated form。这本质上就是 apply 在您将数组传递给它时所做的事情。
【问题讨论】:
-
使用连接?
join(',')还是我真的误会了这个问题? -
抱歉,这里有误会。我不想要一个字符串。我希望我的值用逗号分隔符 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
好吧,你没有说不要使用
eval,所以你可以在join生成的字符串上使用eval,但一般情况下最好避免使用。但是,您的用例听起来像是一种特殊情况,因为您正在重新创建一个内置函数。 -
@forgivenson 是的,我认为你可能是对的。似乎实现这一点的唯一方法是使用 eval()。谢谢!
-
nvm,我试过了,
eval会返回逗号运算符的结果,所以在你的例子中它返回4。
标签: javascript