Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中单个和多个执行上下文之间的差异(Tianium)_Javascript_Titanium_Appcelerator_Titanium Mobile_Appcelerator Mobile - Fatal编程技术网

Javascript中单个和多个执行上下文之间的差异(Tianium)

Javascript中单个和多个执行上下文之间的差异(Tianium),javascript,titanium,appcelerator,titanium-mobile,appcelerator-mobile,Javascript,Titanium,Appcelerator,Titanium Mobile,Appcelerator Mobile,对于Javascript中的单个和多个执行上下文,我真的很困惑。 我提到了这个 虽然我对JS上下文有一个很好的概述。 但我不知道在钛合金中构建应用程序时使用单个或多个上下文何时是好的。来自(我的重点): 使用Tianium Mobile,可以创建url属性设置为Javascript文件路径(相对于当前文件)的窗口。当调用窗口的open方法时,将计算关联的JavaScript文件,从而创建一个辅助“执行上下文”,从而创建一个新的作用域。除了极少数情况外,应避免使用这种多活动JavaScript环境

对于Javascript中的单个和多个执行上下文,我真的很困惑。 我提到了这个 虽然我对JS上下文有一个很好的概述。 但我不知道在钛合金中构建应用程序时使用单个或多个上下文何时是好的。

来自(我的重点):

使用Tianium Mobile,可以创建url属性设置为Javascript文件路径(相对于当前文件)的窗口。当调用窗口的open方法时,将计算关联的JavaScript文件,从而创建一个辅助“执行上下文”,从而创建一个新的作用域。除了极少数情况外,应避免使用这种多活动JavaScript环境

这些多个执行上下文会导致问题,因为没有范围 任何其他内容的可见性,这意味着在上下文之间共享数据是非常重要的 如果不笨拙地使用应用程序级自定义 事件(使用Titanium.App addEventListener和fireEvent)。他们可以 还会导致循环引用和可能的内存泄漏。有 生命周期问题也是如此,当一个生命周期的代码 给定的JavaScript文件已经过评估

虽然这种方法有一些合理的用例,例如 “应用程序中的应用程序”,其中每个新窗口都需要“干净的记录” 由于对全局上下文没有依赖关系,通常是带有URL的windows 不应使用。


无法对Tianium进行明确评论,但浏览器中也存在类似情况,每个窗口和框架都有自己的全局执行上下文(链接的文章说整个浏览器应用程序只有一个全局上下文是不正确的,它是每个窗口或框架的)。子窗口必须将父窗口中的全局变量引用为“opener.varName”,因为不合格的“varName”将在子窗口的作用域中解析,而不是在父窗口的作用域中解析。感谢Adam,您如何避免多个JS环境。如果需要打开该窗口,它将是..关于此的任何提示主要操作是在创建窗口时不使用url属性。相反,选择CommonJS模块化方法,如。Android在执行上下文方面有更多的东西要考虑,或者在你在问题中链接到的帖子中也讨论过。所以,你的意思是使用普通的方法打开窗口会在相同的上下文(环境)中打开那个窗口。如果我们不使用前面提到的任何窗口属性。“以前使用过的窗口属性”。我不明白。请详细说明一下。