javascript - this.initialize(arguments) 与 this.initialize.apply(this, arguments) : what's the difference?

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

最佳答案

this.initialize.apply(this, arguments)

像这样工作:

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

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

这与 just 有很大不同:

this.initialize(arguments)

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

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

关于javascript - this.initialize(arguments) 与 this.initialize.apply(this, arguments) : what's the difference?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183226/

相关文章:

javascript - 如何将旧版 JS 应用程序迁移到模块

javascript - 当屏幕宽度改变时,CSS 属性不适用。同时使用 css 和 jQuery

JavaScript--indexOf 基础知识

javascript - 单击 jQuery 不工作时删除 div 元素

javascript - Backbone 将参数传递给模型 url

javascript - 如何在回调函数中更新和传递变量

javascript - 在什么情况下 defaults 需要是一个函数?

javascript - 问题使用 Mustache 模板渲染 Backbone 集合

javascript - 在 underscore.js 的模板函数的上下文中,interpolate 是什么意思?

backbone.js - event.preventdefault() 在第二次渲染后不工作