首页 > 解决方案 > 如何在 v8 中绑定带有 out 参数的 ac 函数?

问题描述

C函数:

void foo(int* p){
    *p = 10;
}

和 js 调用:

var a = 0;
foo(a);
console.log(a);//expect a to be 10

标签: v8embedded-v8

解决方案


JavaScript 中没有原始类型的外参数,而且 V8 的 API 非常努力地不创建与 JavaScript 不一致的行为,因为那会很奇怪™。

另一种解决方案是将字段嵌入对象中:

var a = {value: 0}
foo(a);
console.log(a.value);  // This can be made to print 10.

使用这种方法,您可以通过 V8 的 API 使用绑定函数的常规方式,并且在 C++ 端只需修改传入对象的相应属性。


推荐阅读