【问题标题】:How javascript call methods working?javascript调用方法如何工作?
【发布时间】:2016-04-13 13:02:58
【问题描述】:

您好,我正在查看 hapijs 框架的核心代码,我注意到了这一点。

 Plugin.call(this, this, [], '', null);

我不知道他们为什么要传递两个 this[], '', null 以及它应该做什么。

【问题讨论】:

    标签: javascript hapijs


    【解决方案1】:

    查看此文件:https://github.com/hapijs/hapi/blob/master/lib/plugin.js#L21

    如前所述,第一个 this 正在传递上下文:fun.call(thisArg[, arg1[, arg2[, ...]]])

    给定函数的参数列表(server, connections, env, parent),最终的参数调用将是:

    server: this
    connections: []
    env: ''
    parent: null
    

    另外,请在此处阅读.call()http://mzl.la/18EkRLg

    【讨论】:

      【解决方案2】:

      .call.apply 用于运行具有不同上下文 this 的函数,并允许您以不同方式传递参数。

      两者都接收this 上下文作为第一个参数。

      call 将剩余的参数作为逗号分隔的参数列表。

      Plugin.call(this, this, [], '', null);
      

      apply 将一个数组或类似数组的参数对象传递给被调用的函数。

      Plugin.apply(this, [this, [], '', null]);
      

      该代码范围内的某处将是一个名为Plugin的函数

      有很多关于 callapply 的文档,因为它可能有点难以理解,但一旦你知道如何以及为什么使用它,你就会开始在任何地方使用它。

      【讨论】:

        猜你喜欢
        • 2017-02-04
        • 1970-01-01
        • 2016-04-20
        • 1970-01-01
        • 2017-05-05
        • 2011-04-17
        • 1970-01-01
        相关资源
        最近更新 更多