问题标签 [spidermonkey]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
58 浏览

firefox - 如何在构建时在firefox SpiderMonkey中设置默认的js引擎?

众所周知,firefox中有几个JSengine(如SpiderMonkey,traceMonkey,jaegerMonkey等),我想知道我们在构建FF11.0或12.0时是否可以设置默认的JSengine SpiderMonkey(只有usr解释器模式)从源头?

例如,我们可以设置任何选项来实现它吗?如果可以,哪个选项可以做到?或者如果你知道其他方法,请告诉我,谢谢

0 投票
1 回答
1145 浏览

javascript - 带块的常量声明

最近我正在研究 Firefox Add-on Builder SDK 源代码,并偶然发现了这样的常量声明:

我可以找到有关CommonJS Modules的信息,但是这个作业的剩余部分让我有点困惑,因为它必须是特定于语言的,我无法在谷歌上搜索任何内容。

有人可以向我指出一些解释这里发生了什么的规范/草案吗?

0 投票
2 回答
1873 浏览

javascript - 编译嵌入式 SpiderMonkey 程序时出错

好的,所以我使用命令下载了 SpiderMonkey 源代码wget http://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz并解压了它。然后我通过执行以下命令成功构建了包含文件和静态库:

  1. autoconf2.13
  2. ./configure --prefix=~/js --disable-shared-js
  3. make
  4. make install

现在我尝试使用命令编译以下代码g++ -I/home/aaditmshah/js/include/js -L/home/aaditmshah/js/lib -lmozjs185-1.0 -ldl -lm -ldl helloworld.cpp -o helloworld

我知道我的includelinker选项指向正确的目录。包含文件在/home/aaditmshah/js/include/js,名为的静态库libmozjs185-1.0/home/aaditmshah/js/lib. 但是它仍然会产生以下错误:

我想知道我缺少哪些文件。我应该重建 SpiderMonkey 并安装它/usr/local吗?任何帮助将不胜感激。

我很确定问题不在于我使用的是静态库。我将 SpiderMonkey 重建为共享对象库,但它仍然给了我同样的错误。

0 投票
3 回答
11872 浏览

javascript - 在底层,Javascript 对象是哈希表吗?

我想知道对象是如何在 Javascript 引擎(V8、Spidermonkey 等)中实现的。它们真的只是哈希表吗?如果是这样,他们如何处理碰撞?

0 投票
4 回答
765 浏览

javascript - 是否存在与引擎无关的 Reflect.parse?

Mozilla 提供了一个用于解析 Javascript 模块以生成抽象语法树的 API 。他们称之为Reflect.parse

是否有一个 Reflect.parse 或类似的东西,用 Javascript 编写为一个独立的模块?我可以在任何 ES5 引擎上运行以生成语法树吗?失败的是,C++ 中有一个独立的工具可以为我做这件事吗?还是服务?


我尝试了 doctorjs.org 的一个非常简单的自我评估匿名函数,但它窒息了。我做错了吗?

0 投票
1 回答
162 浏览

javascript - Javascript 对象中 `get functionname() {...}` 的含义

我一直在查看 GNOME shell javascript 界面,并注意到popupMenu.js来自类原型的以下片段(对于那些感兴趣的人):

谁能给我解释一下是什么get state() { ... }意思?我认为一切都必须是name: valuejavascript 对象中的形式吗?(如果我制作这些对象之一,我可以做obj.state它返回我假设的内容this._switch.state)。

请注意 GNOME 说他们使用类似于 Mozilla 的 Spidermonkey 的一种 javascript (gjs) 风格可能会有所帮助,那么这种行为是非标准的 javascript 行为和 spidermonkey/gjs 的特性吗?

另外,是否有与此相关的文档?

0 投票
1 回答
439 浏览

javascript - Get property name by id

I'm using this code to iterate over the properties passed to a native function:

This works fine to get the value of the property, however, I need the name of that property, too.

I couldn't find any of the various property-related ...ById() functions which give me the property name.

0 投票
1 回答
737 浏览

javascript - 防止 Spidermonkey Javascript 引擎中的垃圾收集

根据 Spidermonkey 的用户指南

https://developer.mozilla.org/En/SpiderMonkey/JSAPI_User_Guide

... jsval 本身并不能保护其所指对象免受垃圾收集器的影响...

我对这句话的理解是,如果我们通过 JS_NewStringCopyZ() 创建一个 JSString,那么返回的值可以随时被 gc'ed。例如

那么我们如何防止上面的str被 gc'ed 呢?我注意到有一个JS_EnterLocalRootScope () 函数,我可以在 JSNative 函数的开头调用它。不幸的是,它现在已被弃用。那么防止gc的正确方法应该是什么?

0 投票
1 回答
32 浏览

firefox - 如何使用 Firefox 源代码中的附属 js 文件在 Firefox 中测试 jsengine?

我已经成功地从源代码构建了spidermonkey,我唯一困惑的是如何测试它的性能?幸运的是,我在FFsource code的/js/src/tests文件夹中看到了很多测试js文件,所以我可以冒险吗?这些测试文件?如何 ?

0 投票
1 回答
102 浏览

javascript - SpiderMonkey 中是否有与 PyCapsule 等效/相似的东西?

当嵌入 Python 时,有一种PyCapsule类型可以创建一个包含 C 指针的对象,该指针不能从 Python 代码中修改,也就是说,它非常适合传递仅由 C 代码使用的东西。

由于我的应用程序还通过 SpiderMonkey 引擎支持 JavaScript,因此我正在 SpiderMonkey 中寻找类似的东西。我知道我可以JSClass使用JSCLASS_HAS_PRIVATE标志创建自定义,但我想知道是否还有另一种更简单/更轻量级的方法。