Как связать функцию переменного тока с параметрами в v8? - PullRequest
0 голосов
/ 02 декабря 2018

Функция C:

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

И вызов js:

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

1 Ответ

0 голосов
/ 03 декабря 2018

Невозможно иметь выходные параметры для примитивных типов в JavaScript, и API V8 очень старается не создавать поведения, несовместимые с JavaScript, потому что это было бы странно ™.

Альтернативное решениезаключается в том, чтобы встроить поле в объект:

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

При таком подходе вы можете использовать обычный способ связывания функций через API V8, а на стороне C ++ просто измените соответствующее свойство объекта, который былпрошло.

...