2016-07-30 95 views
1

我有以下情形如何重寫一個JavaScript關閉函數調用

var bar = (function() { 

    function foo() { 
    console.log("Hello World"); 
    } 

    function bar() { 
    foo(); 
    } 

    return bar; 
}()); 
// override foo before the call 
bar(); 

既然foo被從自返回封閉酒吧裏面函數調用,可以考慮foo是行動象一個私人財產。

我想知道在調用bar之前是否可以覆蓋foo函數?有多少方法可以實現?

這是嘗試的東西,但我無法實現結果。

var bar = (function() { 

    function foo() { 
    console.log("Hello World"); 
    } 

    function bar() { 
    foo(); 
    } 

    return bar; 
}()); 

var _bar = (function() { 
    function foo() { 
    console.log("Hey there"); 
    } 
    return bar; 
}()); 

_bar(); 

回答

2

我想知道如果有可能重寫foo的函數被調用前槓?有多少方法可以實現?

不,並且保留/重複使用bar的當前功能。您可以完全替換bar,但這不是特別有用。

foo完全私人的到它創建的上下文。 bar可以訪問它,但沒有別的事(好吧,好的,foo可以訪問本身)。有沒有辦法到達執行上下文bar關閉並更改其foo綁定,除非明確啓用該功能,在您的示例中沒有任何內容。