【问题标题】:how to override a javascript closure function call如何覆盖 javascript 闭包函数调用
【发布时间】:2016-12-05 02:57:43
【问题描述】:

我有以下场景

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();

【问题讨论】:

    标签: javascript closures overriding


    【解决方案1】:

    我想知道是否可以在调用 bar 之前覆盖 foo 函数?有多少种方法可以实现?

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

    foo 对于创建它的上下文完全私有bar 可以访问它,但没有其他功能(好吧,foo 可以访问自身)。没有办法进入执行上下文 bar 关闭并更改其 foo 绑定,除非有明确的启用,而您的示例中没有这样做。

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 2010-10-25
      • 2019-01-05
      • 2017-09-11
      • 2014-10-03
      相关资源
      最近更新 更多