1
我試圖測試這個模塊:更改功能範圍
function fa(){
return "function A"
}
function fb(){
return "function B + " + fa()
}
module.exports = {fa, fb}
我這樣測試:
3210它實際上是顯示 「功能的B +功能的」
如果我用return "function B + " + this.fa()
替換fb的方法體(注意this.
的添加),然後按預期工作。
有沒有辦法模擬一個沒有用this
調用的函數?
嗯我很抱歉,但不僅僅是它不回答我的問題,我相信這也是不正確的。我輸出的功能與原點完全相同。問題存在於fa如何解決,無論是通過此引用還是通過本地範圍。我知道如何處理'this',但我不知道如何更改函數範圍。綁定一個新的上下文,無論是通過「綁定」還是使用「with」關鍵字都不起作用。 – tibo
你是對的,它是相同的功能。但是當你對myModule.fa進行模擬時,「fa」函數就屬於myModule對象。並且當您調用myModule.fb()時,「fa」函數不屬於myModule對象,因爲您將它作爲函數調用 –
對於不面對這些引用問題,並且不要使用'this'關鍵字,我通常寫我的代碼,如: var exportObject = {}; exportObject.fa = function fa(){ return'function A'; }; exportObject.fb = function fb(){ return'function B +'+ exportObject.fa(); }; module.exports = exportObject; –