Tag: v8

如何有效地检查variables是数组还是对象(在NodeJS&V8中)?

有没有什么办法来有效地检查NodeJS&V8中的variables是Object还是Array? 我正在为MongoDB和NodeJS编写Model,并且要遍历对象树,我需要知道对象是简单的(Number,String,…)还是复合(Hash,Array)。 看来,V8有快速内置的Array.isArray ,但如何检查对象是否是一个对象? 我的意思是像哈希{}或类的实例的复杂对象,而不是像new String() ? 通常可以这样做: Object.prototype.toString.call(object) == "[object Object]" 或这个: object === Object(object) 但是这个行动似乎并不便宜,也许还有一些效率更高? 如果它不是通用的,并且不适用于所有引擎,那么我只需要在V8上工作。

从.NET应用引用Google的V8引擎

我正在构build一个.NET 3.5应用程序,并且需要评估服务器上的JS代码 – 基本上用户提供的规则集可以在浏览器或服务器上工作。 托pipe的JS不是一个选项,因为JS代码将在运行时提供。 Aptana的Jaxer也不是一种select。 所以我正在考虑在我的应用程序中使用V8引擎的构build。 我成功地将源代码构build到DLL中,但该DLL不是托pipe库,也不是COM。 V8只是普通的C ++。 任何想法如何与C#中的这种types的DLL互操作? 此外,我打开其他SpiderMonkey或其他JS引擎的build议。 提前致谢。 更新: 我能够使用瑞安的解决scheme。 我只是更新了从中继到最新版本的参考。 它运作良好。 谢谢瑞安。

长期支持(LTS)和稳定版本的Node.js之间有什么区别?

最初问: Node.js 4.x分支与LTS(长期支持)和5.x分支(列为稳定)有什么区别? 但是这对于理解6.x和7.x以及将来的8.x和9.x之间的区别同样重要 一般来说,我总是倾向于function和性能的最新版本(因为我现在做了很多ES6 / ES7)。 有没有关于“稳定”分支如何生产的信息?

在iOS应用程序中embeddedJavaScript引擎

我想知道是否有人已经成功地将JavaScript引擎/解释器移植到iOS。 我正在写一个iPhone游戏,我想使用Javascript作为高级脚本语言(AI,游戏玩法等),但要做到这一点,我需要将JS引擎编译成静态库,并将其链接到我的iPhone OS的ObjectiveC程序。 有一些我正在看的候选JS引擎,但我找不到任何成功的案例。 这里是我希望用于iOS的js引擎 谷歌的V8 JavaScript引擎 Mozilla的SpiderMonkey 另一种方法是使用UIWebView's Javascriptcallback接口,但是这需要将整个UIWebView加载到内存中,而我所听到的经验是它的性能通常很慢。 感谢如果有人有类似的经历这样做或知道任何参考! 正如Kostis提到的,苹果公司在WWDC 2013上推出了JavascriptCore

Math.random()返回大于一的值吗?

在JavaScript中使用随机数字时,我发现了一个令人惊讶的错误,大概是在Google Chrome的V8 JavaScript引擎中。 考虑: // Generate a random number [1,5]. var rand5 = function() { return parseInt(Math.random() * 5) + 1; }; // Return a sample distribution over MAX times. var testRand5 = function(dist, max) { if (!dist) { dist = {}; } if (!max) { max = 5000000; } for (var i=0; i<max; i++) […]

Node.js:对于每个…在不工作

我想用Node.js(v0.4.11)中的for each … in 我这样使用它: var conf = { index: { path: { first: "index.html", pattern: "index/{num}.html" }, template: "index.tpl", limit: 8 }, feed: { path: "feed.xml", template: "atom.tpl", limit: 8 } } for each (var index in conf) { console.log(index.path); } 我得到以下错误: for each (var index in conf) { ^^^^ node.js:134 throw e; // […]

Android使用V8而不使用WebView

我正在执行从Java执行JavaScript。 犀牛在桌面上工作得很好,但是在Android上必须回到(慢速)解释模式(由于达尔维克无法执行犀牛JIT编译的Java字节码)。 Android有内置的V8 JavaScript引擎,可以通过JNI内部访问,应该比Rhino有更好的性能; 但是,我可以find访问它的唯一方法是间接通过WebView。 不幸的是,WebView需要一个上下文,并与NPE与空上下文崩溃,所以我甚至无法实例化一个虚拟的WebView只是执行代码并返回结果。 我的练习的本质并不能让我为WebView提供一个Context,所以我希望可能有一些我忽略的东西。 其中有几个V8Threads并行运行,所以在我的布局中添加一个WebView并隐藏它并不可行(因为我不相信一个WebView可以在多个线程中执行函数)。 private class V8Thread extends Thread { private WebView webView; private String source; private double pi; private int i, j; public V8Thread(int i, int j) { pi = 0.0; this.i = i; this.j = j; source = ""; try { InputStreamReader isReader = new InputStreamReader(assetManager.open("pi.js")); int blah = […]

访问V8 JavaScript中的行号(Chrome和Node.js)

花时间使用C语言的JavaScript开发人员往往会错过使用某些types的自省的能力,比如logging行号,以及当前方法被调用的方法。 那么如果你使用的是V8(Chrome,Node.js),你可以使用下面的代码。

Javascript引擎的优点

我现在对JavaScript引擎感到困惑。 我知道V8是一个大问题,因为它将JavaScript编译为本机代码。 然后我开始阅读关于Mozilla SpiderMonkey的信息 ,从我的理解是用C编写的,并且可以编译JavaScript。 那么这和V8有什么不​​同?如果这是真的,为什么Firefox不这样做? 最后, 犀牛是否真的将JavaScript编译为Java字节码,以便获得Java的所有速度优势? 如果没有,为什么人们在桌面上编写脚本时不能运行V8?

在不同的对象中使用相同的键时,在V8中调用缓慢的函数

也许不是因为这个电话很慢,而是这个查询是; 我不确定,但这是一个例子: var foo = {}; foo.fn = function() {}; var bar = {}; bar.fn = function() {}; console.time('t'); for (var i = 0; i < 100000000; i++) { foo.fn(); } console.timeEnd('t'); testing在win8.1上 火狐35.01:〜240ms 铬40.0.2214.93(V8 3.30.33.15): 〜760ms msie 11:34 秒 nodejs 0.10.21(V8 3.14.5.9):〜100ms iojs 1.0.4(V8 4.1.0.12): 〜760ms 现在这里是有趣的部分,如果我改变bar.fn bar.somethingelse : 铬40.0.2214.93(V8 3.30.33.15):〜100ms nodejs 0.10.21(V8 3.14.5.9):〜100ms […]