Как связать функцию c без параметров в v8?

Функция C:

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

И вызов js:

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

person w2moon    schedule 02.12.2018    source источник


Ответы (1)


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

Альтернативное решение - встроить поле в объект:

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

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

person jmrk    schedule 03.12.2018