为什么要Function.prototype.bind.apply?

时间:2016-01-18 22:49:11

标签: javascript constructor

我理解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']);

creatorcreator2都有效,那么为什么会选择creator而不是creator2

1 个答案:

答案 0 :(得分:2)

调用creator2args数组作为单个数组参数传递给构造函数。

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