如何在 v8 中绑定带有 out 参数的 c 函数?

How to bind a c function with out parameters in v8?

C 函数:

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

然后 js 调用:

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

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

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

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

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