2016-07-30 15 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 действует как частной собственности.

Я хочу знать, можно ли переопределить функцию foo до того, как вызывается bar? Сколько способов можно достичь?

Вот что-то, что пыталось, но я не смог добиться результата.

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, если только что-то явно не разрешает это, что ничего в вашем примере не делает.