我正在尝试重新实现申请练习。我想出了一个天真的解决方案,在对象上下文中执行函数,方法是临时修饰该对象上的该函数,然后删除该函数。但我无法弄清楚当我调用它时,如何传递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(',')'或者我真的误解了这个问题? – forgivenson
对不起,这里有一个沟通不畅。我不想要一个字符串。我希望我的值用逗号分隔符来分隔https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comma_Operator –
嗯,你没有说不要使用'eval' ,所以你可以在'join'生成的字符串上使用'eval',但这是最好的避免。但是,您的用例听起来像是一种特殊情况,因为您正在重新创建内置函数。 – forgivenson