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
的函数
有很多关于 call
和 apply
的文档,因为它可能有点难以理解,但是一旦您知道如何以及为什么使用它,您就会开始在任何地方使用它.
查看此文件: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
您好,我在查看 hapijs 框架的核心代码时注意到了这一点。
Plugin.call(this, this, [], '', null);
我不知道他们为什么要传递两个 this
和 [], '', null
以及它应该做什么。
.call
和 .apply
用于 运行 具有不同上下文 this
的函数,并允许您以不同方式传递参数。
两者都接收 this
上下文作为第一个参数。
调用将剩余的参数作为逗号分隔的参数列表。
Plugin.call(this, this, [], '', null);
apply 将一个数组或类似数组的参数对象传递给被调用的函数。
Plugin.apply(this, [this, [], '', null]);
该代码范围内的某处将是一个名为 Plugin
有很多关于 call
和 apply
的文档,因为它可能有点难以理解,但是一旦您知道如何以及为什么使用它,您就会开始在任何地方使用它.
查看此文件: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