【发布时间】:2021-10-27 22:27:53
【问题描述】:
我知道使用 apply(obj,args); 调用带有参数数组的函数的可能性; 有没有办法在创建函数的新实例时使用此功能?
我的意思是这样的:
function A(arg1,arg2){
var a = arg1;
var b = arg2;
}
var a = new A.apply([1,2]); //create new instance using an array of arguments
希望你明白我的意思... ^^^
感谢您的帮助!
解决了!
我得到了正确的答案。为了使答案适合我的问题:
function A(arg1,arg2) {
var a = arg1;
var b = arg2;
}
var a = new (A.bind.apply(A,[A,1,2]))();
【问题讨论】:
-
重要提示:该数组的第一个元素是什么并不重要。例如,
new (A.bind.apply(A,['cats',1,2]))();也可以正常工作。原因是new忽略了提供给绑定的this值。 -
使用提供的速记版本,您不需要最后两个括号'()'。因此它可能是:
var a = new (A.bind.apply(A, [null].concat([1, 2])));
标签: javascript