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

Why Function.prototype.bind.apply?

本文关键字:bind apply prototype Function 为什么      更新时间:2023-09-26

我了解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呢?

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

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