gpt4 book ai didi

c++ - 如何从 C++ 类内部获取 v8 对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:03:24 24 4
gpt4 key购买 nike

对不起,我的英语很差,希望有人能理解我说的话像这样的代码

 class Point
{
public:
int x_, y_;
Point(int x, int y):x_(x), y_(y){}
void Test(Local<Object> & obj)
{
//Local<Value> value = ref->Get(String::New("onconnect"));

printf("%d", ref->Get(String::New("getX")));
}
};


Handle<Value> PointConstructor(const Arguments& args)
{

Point *p = new Point(x, y);

object->SetInternalField(0, External::New(p));

p->Test();
return object;
}

...

Handle<String> script = String::New("var p = new Point(20, 0); p.onconnect = function(){}; log(p.getX())");


Handle<Script> compiled_script = Script::Compile(script);

方法“测试”我是一个异步调用,在主线程中运行,当它运行完成时,我调用 js 方法“onconnect”我如何在方法 Test() 中调用 js 方法:onconnect?

最佳答案

我凭内存写的,某些类型或调用可能略有不同。假设 Test 收到 Point 引用:

void Test(Local<Object> obj)
{
String funName = String::New("onconnect");
if (obj->Has(funName)){
Local<Value> fun = obj->Get(funName);
// would suggest to check additionally whether it actually is a function
Local<Value> args[] = {}; // empty arguments
Local<Value> result = fun->AsObject()->CallAsFunction(obj, 0, args);
}
}

关于c++ - 如何从 C++ 类内部获取 v8 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13173105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com