this.initialize(arguments)vs this.initialize.apply(this,arguments):有什么区别?

时间:2013-03-03 06:51:44

标签: javascript backbone.js

如果您查看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)呢?

1 个答案:

答案 0 :(得分:8)

this.initialize.apply(this, arguments)

像这样工作:

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

参数中的每个项目都作为参数传递给initialize()

与以下内容有很大不同:

this.initialize(arguments)

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

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