如何覆盖javascript闭包函数调用

时间:2016-07-30 14:22:23

标签: javascript closures function-overriding

我有以下情况

var bar = (function () {

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

  function bar() {
    foo();
  }

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

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

1 个答案:

答案 0 :(得分:2)

  

我想知道如果可以在调用条形图之前覆盖foo函数?有多少种方法可以实现?

不,不要保留/重用bar的当前功能。您可以完全替换bar,但这并不是特别有用。

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