我正在寻找用于游戏开发的脚本引擎。我不喜欢lua(因为它的语法和特性),我很喜欢js,所以我想用googleV8,但好像在iOS中不是很友好?那么,是否有一个c++bind可以跨v8和JavaScriptCore?在iOS中使用JavaScriptCore,其他人使用V8来绑定(bind)相同的C++代码。 最佳答案 我为此启动了一个项目。它目前支持构建和运行V8项目3.14版以及Node0.10版中包含的示例。https://github.com/flyover/v8like我还使用iOS和OSX的项目文件创建了Node项目的分支
我发现了如何调用带参数的函数。intargc=1;v8::Handleargv[]={v8::String::New("arg")};v8::Localresult=function->Call(foo,argc,argv);但是我想调用一个不带任何参数的函数,因此argc必须是0而argv必须是一个零长度的数组,我猜这在C++中是不可能的。如何在V8中正确调用不带参数的JavaScript函数? 最佳答案 非常简单,只需使用:function->Call(function,0,NULL);
我想在原生NodeJS(0.11.5)扩展中创建自定义异常。我正在尝试在V8(3.20.11)中创建内置Error类的子类。基本上,我正在寻找与以下Javascript代码等效的C++:functionMyError(message){Error.apply(this,arguments);this.message=message;}MyError.prototype=newError;MyError.prototype.name=MyError.name;newMyError("message")我尝试挖掘V8源代码,发现以下辅助方法似乎可以完成我想要的部分操作:HandleFact
当使用V8作为脚本引擎时,我向Javascript公开了一个名为construct_with_ec6_syntax的C++函数。这个函数在被调用时应该简单地返回一个some_ec6_class的实例。这个C++函数基本上应该执行以下等效的Javascript:returnnewsome_ec6_class(111,222);这个类将在Javascript中定义如下EC6语法:classsome_ec6_class{constructor(x,y){this.result=x+y;}}我的目标是在Javascript中运行以下...varthe_instance=construct_wi
Localtpl=ObjectTemplate::New(isolate);tpl->SetInternalFieldCount(1);Localret=tpl->NewInstance();TestExternal*ex=newTestExternal();ret->SetInternalField(0,External::New(isolate,ex));当ret不再使用时,我是否应该手动删除ex指针?表明我应该或不应该这样做的证据源代码在哪里? 最佳答案 是的,C++需要手动内存管理:如果您使用new手动创建一个对象,那么您还
我正在尝试将一个自定义函数嵌入到我的项目中,该项目使用V8引擎,但显然我无法使其正常工作。我使用过我发现的代码,但它似乎已经过时,或者我只是做错了。我的观点是包含一个自定义javascript文件。我当前的代码(用于测试)是这样的:HandleScopehandle_scope(isolate);v8::Localglobal=v8::ObjectTemplate::New(isolate);global->Set(v8::String::NewFromUtf8(isolate,"test",v8::NewStringType::kNormal).ToLocalChecked(),v8
Google很好地解释了如何wrapC++classmethodswithaccessorsthatcanbeusedfromtheV8Javascriptengine.但是,他们没有提到如何确定将具有这些访问器属性的JavaScript对象的名称。我如何告诉V8JavascriptC++类实例(来自示例)的名称是什么?或者,如果它已有名称,那是什么?这两行设置访问器:point_templ.SetAccessor(String::New("x"),GetPointX,SetPointX);point_templ.SetAccessor(String::New("y"),GetPoin
Glimmerjs提供一堆NPM软件包(实际上安装了20个软件包,以用于官方教程中的简单演示https://glimmerjs.com/guides/)。每个软件包都包含dist/文件夹在以下子文件夹中的几个脚本的变体:amdcommonjs模块类型它使我认为我可以将Glimmer用作AMDLib而无需其应用程序置构建内容。我不再使用Ember-Cli/Baroccoli或一般而言的建筑物/包装,而我只是想采取最小的步骤来在现有的应用中采用微光,我不想引入其所有建筑管道魔术。因此,我的问题是如何在将其模板作为字符串作为字符串的运行时创建和渲染一个微弱的组件。P.S.关键点不是使用AMD的光线,
我对V8的作用域如何工作很感兴趣。堆栈上的作用域对象如何找到堆栈更上层的其他作用域对象和上下文?深入研究HandleScopes的工作原理后,我发现它们依赖于线程局部变量。这让我想知道这些在C++中是如何工作的,我已经找到了实现,但仍然觉得我不明白发生了什么。api.cc--HandleScope查找当前IsolateHandleScope::HandleScope(){i::Isolate*isolate=i::Isolate::Current();API_ENTRY_CHECK(isolate,"HandleScope::HandleScope");v8::Implementati
有人知道如何在C++的嵌套函数调用中查找局部变量吗?考虑以下示例://e.g.aglobalvariableinthebrowservarglobal="global_value";functionfoo(){varglobal="local_value";myCppFunction("global",global);}foo();我现在的问题是,在myCppFunction的实现中,我如何从“foo”访问函数局部变量“global”(不是值,这将由第二个参数给出)?HandleMyCppFunction(constArguments&args){LocalvarName=args[0