如何覆盖 javascript 闭包函数调用

how to override a javascript closure function call

我有以下场景

var bar = (function () {

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

  function bar() {
    foo();
  }

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

由于 foo 是从 a 闭包内部返回的 bar 函数调用的,因此可以认为 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();

I want to know If it is possible to override the foo function before the bar is called? How many ways can it be achived?

不,不是 keep/reuse bar 的当前功能。您可以完全替换 bar,但这不是特别有用。

foo 对于创建它的上下文是完全私有的bar 可以访问它,但没有其他访问权限(好吧,好吧,foo 可以访问 本身 )。无法进入执行上下文 bar 关闭并更改其 foo 绑定,除非明确启用它,而您的示例中没有任何内容。