问题标签 [v8]

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 投票
4 回答
34098 浏览

javascript - Javascript 引擎的优势

我现在对 JavaScript 引擎感到困惑。我知道V8很重要,因为它将 JavaScript 编译为本机代码。

然后我开始阅读有关Mozilla SpiderMonkey的信息,据我了解,它是用 C 语言编写的,可以编译 JavaScript。那么这与 V8 有何不同,如果这是真的,为什么 Firefox 不这样做呢?

最后,Rhino是否真的将 JavaScript 编译为 Java 字节码,以便您获得 Java 的所有速度优势?如果不是,为什么人们在桌面上编写脚本时不运行 V8?

0 投票
3 回答
3894 浏览

javascript - Javascript 正则表达式挂起(使用 v8)

我使用这个正则表达式来获取文件中标签的内容。

这会导致 v8 引擎无限期挂起。

现在,如果我使用new RegExp("<tag:main>([\s\S]*)</tag:main>"),一切都很好。

任何人都知道为什么第一个需要太长时间?

0 投票
3 回答
2180 浏览

c++ - 如何使用 V8 的内置函数

我是 javascript 和 V8 的新手。根据 Google's Embedder's Guide,我在上下文部分看到了一些关于内置实用程序 javascript 函数的内容。而且我还在下载的源代码中找到了一些.js文件(例如math.js),所以我尝试编写一个简单的程序来调用这些文件中的函数,但我失败了。

  1. 创建的上下文是否Persistent<Context> context = Context::New()有任何内置的 js 函数?我怎样才能访问它们?

  2. 有没有办法首先将现有的 js 文件作为库导入(类似于 HTML 页面中的 src="xxx" type="text/javascript" )然后运行我自己的执行脚本?

  3. 我可以通过应用程序中的嵌入式 V8 库调用谷歌地图 api 吗?如何?

0 投票
2 回答
7152 浏览

javascript - Google Javascript v8 - 多线程

假设我有以下代码

确实不能使用多个线程执行此代码吗?似乎HandleScope不是为多线程应用程序设计的。我可以使用v8::Lockerandv8::Unlocker方法,但这总是会给我执行跟踪,如下所示:

我希望有人能给我一个关于让这个代码多线程的提示,以便可能的执行跟踪可以像这样:

0 投票
2 回答
577 浏览

javascript - Javascript让对象回退到另一个

这是一个丑陋的Javascript,如果能找到解决方法会很好。

Javascript 没有类,这是一件好事。但是它以一种相当丑陋的方式实现了对象之间的回退。基本构造应该是拥有一个对象,当无法找到某个属性时,它会退回到另一个对象。

因此,如果我们想a退回到b我们想要做的事情:

然后

但是,Javascript 提供了一个new运算符和prototypes. 所以我们做的远不那么优雅:

但是除了优雅之外,这也没有那么强大,因为这意味着用 A 创建的任何东西都会得到相同的后备对象

我想做的是将 Javascript 从这种人为的限制中解放出来,并能够为任何单个对象提供任何其他单个对象作为其后备。这样我可以在有意义的时候保持当前的行为,但在有意义的时候使用对象级继承。

我最初的方法是创建一个虚拟构造函数:

但不幸的是:

任何想法为什么这不起作用,或任何解决方案的实施setFallback

(我通过 node.js 在 V8 上运行,以防这取决于平台)


编辑:

我在下面发布了一个部分解决方案,适用于 V8,但不是通用的。我仍然希望有一个更通用的解决方案。

0 投票
13 回答
125699 浏览

javascript - 在没有浏览器的情况下执行 JavaScript?

我正在研究没有浏览器的 Javascript 编程。我想从 Linux 或 Mac OS X 命令行运行脚本,就像我们运行任何其他脚本语言(ruby、php、perl、python...)

我研究了蜘蛛猴 (Mozilla) 和 v8 (Google),但它们似乎都是嵌入的。

是否有人使用 Javascript 作为脚本语言从命令行执行?

如果有人好奇我为什么要研究这个,我一直在寻找node.js。node.js 的性能让我想知道 javascript 是否可以成为处理大数据的可行脚本语言。

0 投票
4 回答
14927 浏览

javascript - 使用 V8 将 JavaScript 编译为原生代码

使用 Google 的 V8 引擎,真的有可能将 JavaScript 编译为原生代码,将其保存为二进制文件,并在任何时候通过我的软件环境在任何机器上执行它吗?

0 投票
3 回答
7329 浏览

javascript - 我在哪里下载 TraceMonkey?

我可以从这里获得 Spidermonkey javascript 引擎:

http://www.mozilla.org/js/spidermonkey/

而且,我知道 Tracemonkey 是 SpiderMonkey 之后发布的较新版本,但我在 Mozilla 中找不到它的下载链接?是否发布供公众使用?我应该坚持使用 SpiderMonkey 还是完全切换到 Google 的 V8 - 如果 TraceMonkey 无法公开下载?

0 投票
2 回答
374 浏览

v8 - v8 对于我的目的来说太慢了

我正在为 libvisual 开发音乐可视化插件。这是一个 AVS 克隆—— AVS 来自 Winamp。现在我有一个超级作用域插件。该元素有 4 个脚本,“点”在每个像素处运行。你可以想象它必须相当快。最初的 libvisual avs 克隆有一个非常快的 JIT 编译器,但它有一些错误并且没有完全实现,所以我决定尝试 v8。好吧,v8 在每个像素处运行编译脚本太慢了。为此目的,是否有任何其他脚本引擎会非常快?

0 投票
3 回答
18448 浏览

javascript - 如何在 V8 Javascript 引擎中公开一个 C++ 类,以便可以使用 new 创建它?

公开 Point 类的官方示例似乎假设您的程序中将有固定数量的实例。当在 Javascript 中调用new时,尚不清楚如何在 C++ 代码中分配新实例。

你将如何公开一个可以有多个实例的类?例如,一个 Image 类: