`
deng131
  • 浏览: 681556 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SpiderMonkey实现Javascript 脚本引擎

阅读更多
SpiderMonkey作为 Javascript 脚本引擎,一般用来嵌入其他语言中。同时还有google v8.
http://www.aoeex.com/personal/2006/06/07/coding_with_spidermonkey.php

可以要让程序带有脚本控制功能,最经典的就是 Office的VBA了。
What SpiderMonkey does

The JavaScript engine compiles and executes scripts containing JavaScript statements and functions. The engine handles memory allocation for the objects needed to execute scripts, and it cleans up—garbage collects—objects it no longer needs.

编译器只是执行脚本,分配内存,回收内存垃圾。

The word JavaScript may bring to mind features such as event handlers (like onclick), DOM objects, window.open, and XMLHttpRequest. But in Mozilla, all of these features are actually provided by other components, not the SpiderMonkey engine itself. SpiderMonkey provides a few core JavaScript data types—numbers, strings, Arrays, Objects, and so on—and a few methods, such as Array.push. It also makes it easy for each application to expose some of its own objects and functions to JavaScript code. Browsers expose DOM objects. Your application will expose objects that are relevant for the kind of scripts you want to write. It is up to the application developer to decide what objects and methods are exposed to scripts.

在这里,要把Javascript 与其他组件分开来看。SpiderMonkey只是一个引擎,提供一些很少的功能。浏览器的dom ,windows,xmlhttprequest是由浏览器其他组件提供的功能。这样有利于程序暴露自已的对象。比如浏览器的DOM 。那写程序的时候就编写自己希望脚本控制的对象。但是,JavaScript是一种弱类型语言,数据类型怎么转换过去呢?

------------------------------------------------------------------------------------------------------------------------------------------

在SpiderMonkey的使用当中,最重要的要有3个元素:JSRuntime,JSContext,还要有一个全局对象 global object.

Runtimes. 通常一个程序只会存在一个runtime.所有的变量,对象,脚本还有context都只会存放在runtime里。

Contexts. 有点像线程,可以执行程序,获取变量,调用函数,但是不同的是这些并不是绑定在一起的。几乎所有的JSAPI函数都需要一个JSContext *作为第一个参数。

A JSContext, or context, is like a little machine that can do many things involving JavaScript code and objects. It can compile and execute scripts, get and set object properties, call JavaScript functions, convert JavaScript data from one type to another, create objects, and so on. Almost all JSAPI functions require a JSContext * as the first argument, just like most <stdio.h> functions require a FILE *.

There is a close association between contexts and threads. Simple, single-threaded applications can use a single context for everything. But each context can only do one thing at a time, so in a multithreaded application, only one thread at a time should use any given context. Such an application typically has one context per thread. JavaScript objects, on the other hand, are not permanently associated with the script, thread, or context that created them. They can be shared among many scripts or even many threads, as shown in the figure below.



Global objects. Lastly, the global object contains all the classes, functions, and variables that are available for JavaScript code to use. Whenever JavaScript code does something like window.open("http://www.mozilla.org/"), it is accessing a global property, in this case window. JSAPI applications have full control over what global properties scripts can see. The application starts out by creating an object and populating it with the standard JavaScript classes, like Array and Object. Then it adds whatever custom classes, functions, and variables (like window) the application wants to provide; see Custom objects below. Each time the application runs a JS script (using, for example, JS_EvaluateScript), it provides the global object for that script to use. As the script runs, it can create global functions and variables of its own. All of these functions, classes, and variables are stored as properties of the global object.
分享到:
评论

相关推荐

    通过MOZILLA的javascript引擎(SpiderMonkey)执行js代码

    Mozilla的SpiderMonkey是第一个JavaScript引擎,由Mozilla基金会开发,用于支持Firefox浏览器和其他Mozilla相关项目。这个引擎实现了ECMAScript标准,使得JavaScript代码能够被高效地解析和执行。 SpiderMonkey的...

    spiderMonkey_js-1.5-rc6a.tar.gz_SpiderMonkey_openVXI_spiderMonke

    SpiderMonkey是Mozilla公司开发的一款JavaScript引擎,它是Firefox浏览器的核心组成部分之一。这个名为"spiderMonkey_js-1.5-rc6a.tar.gz"的压缩包文件包含了SpiderMonkey的1.5版本的源代码,其中rc6a代表的是...

    spidermonkey38.rar

    对于SpiderMonkey,这些库文件包含了JavaScript引擎的实现,使你的C++应用能够解析和执行JavaScript代码。 **bin**目录通常包含可执行文件和其他运行时必要的组件。在这个情况下,可能会有SpiderMonkey的解释器或...

    spidermonkey_js32.zip

    在JavaScript的世界里,SpiderMonkey是最早的实现之一,为Mozilla Firefox等浏览器提供了JavaScript的解析和执行能力。本压缩包"spidermonkey_js32.zip"包含的是SpiderMonkey 1.6的32位版本,这个版本发布时间相对较...

    SpiderMonkey_JSAPI

    SpiderMonkey是Mozilla开发的一个开源JavaScript引擎,它是Firefox浏览器和其他Mozilla软件的核心组成部分。这个压缩包文件“SpiderMonkey_JSAPI”包含了SpiderMonkey的JavaScript Application Programming ...

    spiderMonkey_API实现自定对象的内嵌

    SpiderMonkey是Mozilla开发的一款JavaScript引擎,它作为开源项目,被广泛应用于各种场景,如浏览器、服务器、桌面应用等。本篇文章将深入探讨如何利用SpiderMonkey API来实现自定义对象的解析与运行。 1. **Spider...

    SpiderMonkey 1.6

    **SpiderMonkey 1.6:JavaScript 引擎的深度解析** SpiderMonkey 是 Mozilla 开源项目中的一个关键组件,它是一个高性能的 JavaScript 引擎,由 Brendan Eich 在 1998 年创建,旨在为 Netscape Navigator 浏览器...

    SpiderMonkey1.6&1.7 编译文件(全部lib,dll,h文件)

    SpiderMonkey是Mozilla开发的一款JavaScript引擎,它以快速、小巧和高度可嵌入而著称。在JavaScript的世界里,SpiderMonkey是最早的实现之一,为各种应用程序提供了执行JavaScript代码的能力。这个压缩包包含了...

    在Windows系统编译制作SpiderMonkey包.pdf

    SpiderMonkey是一款高性能的JavaScript引擎,由Mozilla基金会开发并维护。该引擎最初是为了支持Firefox浏览器而设计的,但因其出色的性能表现和丰富的功能集,也被广泛应用于服务器端和其他非浏览器环境。本文档主要...

    spider monkey+codeblocks 安装及使用demo

    Spider Monkey是Mozilla公司开发的一款JavaScript引擎,它用于在Firefox中执行JavaScript代码。由于其高效的性能和灵活性,Spider Monkey也被广泛应用于其他非浏览器环境,比如作为服务器端的脚本语言或者在桌面应用...

    spidermonkey-让你的c程序支持javascript脚本.docx

    spidermonkey-让你的c程序支持javascript脚本.docx

    C++调用 javascript脚本SpiderMonkey 1.7 win32 x86库文件

    C++调用 javascript脚本SpiderMonkey 1.7 win32 x86库文件已编译好,可以直接使用

    spidermonkey-ios:Game Closure修改了最新的Mozilla SpiderMonkey JavaScript引擎

    Mozilla SpiderMonkey是JavaScript的解释器和JIT(即时)编译器。 Apple不允许在App Store上自行修改应用程序代码,因此Game Closure SDK基于SpiderMonkey的解释器模式,而不是更快的IonMonkey引擎。 我们在构建...

    一种新型组态软件脚本引擎模块的设计.pdf

    本文详细阐述了基于JavaScript语言、Spider Monkey引擎的新型组态软件脚本引擎模块的设计,该模块可以提供诸多接口与组态软件的其他模块衔接,完成整体系统的实时通讯。 在工业自动化水平不断提高的情况下,人们对...

    基于嵌入式浏览器的JavaScript解析器设计.pdf

    JavaScript解析器的实现主要包括两个部分:JavaScript解析程序和SpiderMonkey引擎。JavaScript解析程序负责解析JavaScript语句,并输入到SpiderMonkey引擎中,SpiderMonkey引擎负责对JavaScript语句的分析和执行。 ...

    DCS组态软件中脚本模块的设计实现.pdf

    在DCS组态软件中,通过调用SpiderMonkey提供的API函数,可以对JavaScript脚本进行解释和执行,使得用户能够编写自己的控制逻辑,实现与硬件设备的交互,以及数据的读取和处理。 在具体实现上,DCS组态软件首先需要...

    JavaScript引擎在动态网页采集技术中的应用.pdf

    在实现JavaScript引擎时,我们可以使用SpiderMonkey引擎,这是一个开放源码的JavaScript引擎。SpiderMonkey引擎可以轻松地与C++语言集成,从而实现JavaScript引擎的功能。 在测试中,我们使用了SpiderMonkey引擎来...

    新型DCS脚本系统的研究与设计.pdf

    4. 基于SpiderMonkey的脚本引擎设计:SpiderMonkey是JavaScript解释器引擎的API库,具有开放性和可移植性。该脚本引擎能够在多种平台上运行,提供了强大的脚本功能。 5. 脚本模块的设计:脚本模块的设计基于Spider...

Global site tag (gtag.js) - Google Analytics