您好我正在查看hapijs框架的核心代碼,我注意到了這一點。javascript調用方法如何工作?
Plugin.call(this, this, [], '', null);
我不知道他們爲什麼要傳遞兩個this
和[], '', null
和什麼是應該做的。
您好我正在查看hapijs框架的核心代碼,我注意到了這一點。javascript調用方法如何工作?
Plugin.call(this, this, [], '', null);
我不知道他們爲什麼要傳遞兩個this
和[], '', null
和什麼是應該做的。
看看這個文件: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
.call
和.apply
用於運行具有不同上下文this
的函數,並允許您以不同的方式傳遞參數。
都收到this
上下文作爲第一個參數。
調用將其餘參數作爲參數的逗號分隔列表。
Plugin.call(this, this, [], '', null);
apply將參數對象的數組或數組傳遞給被調用的函數。
Plugin.apply(this, [this, [], '', null]);
某處代碼的範圍將是一個名爲Plugin
功能有大量的文檔上call
和apply
因爲它可以是一個有點難以圍繞讓你的頭,但一旦你知道如何以及爲什麼使用它,你將開始在任何地方使用它。
我現在很清楚。謝謝! –