为了能在SpiderMonkey上运行任意js脚本,应用程序必须有3个关键元素:一个JSRuntime,一个JSContext,和一个global object。本节讨论这几个元素是什么。下节解释如何用JSAPI函数创建它们。
Runtimes JSRuntime是分配你应用程序所要使用的js变量、对象、脚本和上下文的空间。应用程序中每一个JSContext和Object都在JSRuntime中生存。它们不能进入其他的Runtime也不能在Runtime之间共享。大多数应用程序只需要一个Runtime
Context JSContext是一个干很多事情的机器,包括js代码和对象。它可以编译执行脚本、get或者set对象的属性,调用js函数,转换js数据的类型,创建对象等等。几乎所有的JSAPI函数都需要JSContext*作为第一个参数,就像大多数
函数需要一个FILE*参数一样
Context与线程之间有很紧密的联系。简单的说:单线程应用程序可以使用单个Context来做任何事情。但是每一个Context只能一次做一件事,所以在多线程应用程序中,只有一个线程在某时间内使用给定的context。这样的应用程序一般会一个线程拥有一个context。但是相反的是,一个js对象却不会跟创建它的脚本、进程或者context永久相关联。它们可以在脚本或线程之间共享,如下图
Global object 最后,global object包含所有的js代码可以使用的类,函数和变量。当js代码做一些事情诸如window.open(""),它就是在访问全局变量的属性(window).JSAPI应用程序可以全全控制它所能看到的global properties script可以看到的东西。应程序最初创建一个对象,并且使用标准的js类对它进行populate,像Array和Object。然后添加应用程序想添加的任何用户类、函数或变量。每次应用程序运行js脚本,它就提供global object给脚本来使用。当脚本运行的时候,它可以创建自己全局函数和变量。所有的这些函数,类和变量都被存储成global object自己的属性。
阅读(1440) | 评论(0) | 转发(0) |