javascript 调用方法如何工作?

How javascript call methods working?

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

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

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

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

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

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

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

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

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

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

的函数

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

查看此文件: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