2013-03-03 39 views
4

如果你看看Backbone.js的源代碼,你會看到這種模式的多種用途:this.initialize(arguments)vs this.initialize.apply(this,arguments):有什麼區別?

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)呢?

回答

7
this.initialize.apply(this, arguments) 

是這樣工作的:

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

在辯論中的每一項都作爲參數傳遞給initialize()

這是隻是很不同:

this.initialize(arguments) 

通過argumentsinitialize()

換句話說,如果該函數期望的陣列作爲第一個參數,第一和唯一的參數使用this.initialize(arguments),否則使用.apply()

相關問題