0

我是java中的新手,但代码在解释下方 这是来自游戏的代码,但问题是:使用导航器功能,我在游戏中单击导航器,然后某种(ajax?)继续,它得到记录。但是当我使用我的 FireBug 控制台时,我无法发送带有返回行上方功能的消息。 本质上.. ThisFunction.* 显示的唯一函数是底部返回的函数。如何调用 Navigator 函数?我试过: ThisFunction.a.navigator(args here);

,但它说 a 未定义..它也没有显示在自动完成列表中。

** 我删除了代码,因为它来自游戏。谢谢您的帮助!**

4

3 回答 3

1

你用这个有点把它钉在了头上:

ThisFunction.* 显示的唯一函数是底部返回的函数

这是语言的预期和有目的的功能。

简短的回答:你必须从闭包中返回任何你想从外部访问的东西......这可能是 a 变量,或者它可能是一个 api,它本身可以访问 a 变量,同时保持它对外部的私有。这称为词法作用域,它是您的朋友。

示例时间:

var ThisFunction = (function() {
  var a = { navigator: "woot" };
  var b = function() {
    return a;
  }
});
ThisFunction.a; //a is null/undefined on the returned
ThisFunction.b; //b is defined yay
var aOUTSIDE = ThisFunction.b();
aOUTSIDE.navigator; // "woot"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures

因此,唯一能在 A 得到的东西是那些在与 a 相同的“范围”内变化的东西。因此,要么将 A 返回范围之外,要么从范围内返回提供 API 以获取 A 或执行 A 的某些内部的东西......

于 2013-08-14T19:26:39.633 回答
0

根据OTHERFUNCTIONSHERE具体情况,您可以从其中一个函数中访问它,如果它们关闭了变量a(顺便说一下,为什么要使用这种神秘的 var 名称?)。否则,超出范围。

于 2013-08-14T19:24:50.820 回答
0

鉴于您使用的是 Firebug,ThisFunction.%a.navigator(... args)应该可以工作(.%是该语言的Firebug 特定扩展)。但正如其他答案中所指出的,纯 JavaScript 是不可能的。

于 2013-08-14T19:46:33.297 回答