我理解Function.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
?
答案 0 :(得分:2)
调用creator2
将args
数组作为单个数组参数传递给构造函数。
调用creator
会将数组中的每个项目作为单独的参数传递(通过apply
)。