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