Javascript 为什么使用Function.prototype.bind.apply?

Javascript 为什么使用Function.prototype.bind.apply?,javascript,constructor,Javascript,Constructor,我了解函数.prototype.bind.apply的工作原理。假设以下定义: var Constructor = function(someArgument){ //constructor body here }; var creator = function(ctor, args){ args.unshift(null); //or anything else to make 'bind' succeed return new (Function.prototype

我了解
函数.prototype.bind.apply
的工作原理。假设以下定义:

var Constructor = function(someArgument){
    //constructor body here
};

var creator = function(ctor, args){
    args.unshift(null); //or anything else to make 'bind' succeed
    return new (Function.prototype.bind.apply(ctor, args));
};

var creator2 = function(ctor, args){
    return new ctor(args);
};

var obj = creator(Constructor, ['someVar']);
var obj2 = creator2(Constructor, ['someVar']);

creator
creator2
都可以工作,那么为什么要选择
creator
而不是
creator2

调用
creator2
args
数组作为单个数组参数传递给构造函数


调用
creator
将数组中的每个项目作为一个单独的参数传递(通过
apply
)。

不确定这解释了为什么应该选择一个而不是另一个。谢谢,这是我忽略的一些(重要)细节。这也解释了为什么
返回new(ctor.bind(null,args))不适合。@RobG:他们做两件不同的事情。您应该选择您需要的选项。OP以“我了解Function.prototype.bind.apply是如何工作的…”开头,因此我天真地假设他/她知道它是如何工作的。也许我应该将其改为“我认为我了解…如何工作的”。apply只是在调用函数时设置此值的一种方便方法,这样您就可以传递参数了(例如)不必构建包含每个参数的调用表达式。我认为除了方便之外,没有什么值得推荐的。如果有零个或一个参数,那么它对调用没有任何好处。