3

我对 Javascript 中的单个和多个执行上下文感到非常困惑。我提到了这个http://developer.appcelerator.com/blog/2010/08/execution-contexts.html 虽然我对 JS 上下文有一个很好的概述。但是我不知道在 Titanium 中构建应用程序时使用单个或多个上下文什么时候比较好。

4

1 回答 1

3

来自最佳实践文档(强调我的):

使用 Titanium Mobile,可以创建一个带有 url 属性的窗口,该属性设置为 Javascript 文件的路径(相对于当前文件)。当窗口的 open 方法被调用时,相关的 JavaScript 文件被评估,创建一个辅助的“执行上下文”,因此,一个新的范围。除非在极少数情况下,应避免这种多活动 JavaScript 环境。

这些多个执行上下文会导致问题,因为没有任何其他范围可见,这意味着如果不笨拙地使用应用程序级自定义事件(使用 Titanium.App addEventListener 和 fireEvent),则无法在上下文之间共享数据。它们还可能导致循环引用和可能的内存泄漏。也有生命周期问题,当给定 JavaScript 文件的代码被评估时变得不清楚。

虽然这种方法有一些合理的用例,例如“应用程序中的应用程序”,其中每个新窗口都需要一个“干净的状态”而不依赖于全局上下文,但通常不应使用带有 URL 的窗口。

于 2012-07-30T17:16:13.363 回答