5

如果您查看 Backbone.js 的源代码,您会看到这种模式的多种用途:

  this.initialize.apply(this, arguments);

例如,这里:

  var Router = Backbone.Router = function(options) {
    options || (options = {});
    if (options.routes) this.routes = options.routes;
    this._bindRoutes();
    this.initialize.apply(this, arguments);
  };

为什么不直接写this.initialize(arguments)呢?

4

1 回答 1

8
this.initialize.apply(this, arguments)

像这样工作:

this.initialize(arguments[0], arguments[1], arguments[2], ...)

arguments 中的每一项都作为参数传递给initialize()

这与只是:

this.initialize(arguments)

arguments作为第一个也是唯一的参数传递给initialize()

换句话说,如果函数需要一个数组作为第一个参数,则使用this.initialize(arguments),否则使用.apply()

于 2013-03-03T06:54:36.397 回答