在v8中,使用cpp对象作为参数执行js函数
Execute a js function with a cpp object as argument in v8
是否可以在v8中使用cpp对象作为参数来执行js函数?
如果是,那么怎么做?
假设javascript中有一个函数可以遍历节点树。
function traverse_tree(root) /* root is type of Node */
{
no_of_node++; /* no_of_node is a global variable in js */
for(var i=0;i<root.children.length;i++)
{
traverse_tree(root.children[i]);
}
}
节点树是用C++创建的;
class Node
{
public:
std::vector<Node*> children;
}
如何在函数调用参数中传递在cpp中创建的树结构的根?
简短回答
不,您不可能从javascript访问实际的C++对象。
- Webkit桥接的工作原理是使C++对象的方法在特定名称下的javascript中可用
- 字符串或整数等简单变量可以作为参数传递给这些函数调用
- 只要是HashMaps(键值对),就可以传递更复杂的对象
这意味着不可能传递引用;份额;对象。
可能的实施
- 您可以在C++应用程序中创建一个方法(作为单独的类或Node的一部分),并将该对象公开给javascript。然后,您需要的任何实现(例如搜索特定项)都可以在C++中完成。通过这种方式,您为C++应用程序功能创建了一个javascript API
- 如果你真的需要用javascript进行处理,那么你必须想办法把树转换成某种HashMap(这样它作为JSON对象就有意义了),然后把它作为参数返回给javascript
相关文章:
- 当函数模板参数是具有默认参数的类模板时,函数模板参数的推导如何执行
- 如何将带有参数的愚蠢函数添加到愚蠢的执行器中?
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 是否可以在命令行中将输入参数传递给可执行文件
- 是否可以将具有不同签名的 lambda 存储在 std::vector 中并在函数中执行它们(使用各自的参数)?
- 如何将带有参数的方法传递给线程以执行?
- 运算符 new 的执行顺序和构造函数的参数
- 使用参数包自动执行dynamic_cast检查
- 执行参数未提供预期结果
- 如何查看完整的CMD执行命令,包括参数和标志?
- 命令行参数执行C 程序
- 在v8中,使用cpp对象作为参数执行js函数
- 对重载运算符参数执行隐式转换时出现编译器错误
- 如何使C++函数使用双精度参数或无参数执行
- 打开一个通过命令参数执行某些操作的函数
- 如何检查 chaiscript 中是否定义了函数以及如何使用类型化参数执行它
- 使用一个参数执行?为什么
- 基于运行时参数执行整型模板函数
- 使用c++将音频从mp4提取为mp3(不使用参数执行ffmpeg)
- Dll注射.使用参数执行CreateRemoteThread