Как передать переменную ссылкой в JavaScript? Считайте данные с функции ActiveX, которая возвращает больше чем одно значение

Я использовал коллектор Boehm в прошлом с хорошим успехом. Это - открытый исходный код и может использоваться в коммерческом программном обеспечении.

Это - консервативный коллектор и имеет долгую историю разработки одним из передовых исследователей в технологии сборки "мусора".

5
задан Nathan Hughes 19 April 2012 в 15:54
поделиться

3 ответа

Типы-примитивы, в основном строки / числа / логические значения, передаются по значению в целях повышения эффективности. Такие объекты, как функции, объекты, массивы и т.п. передаются по ссылке. Вы можете создать объект и передать его, например {d: 1, s: 'directo'}, а затем изменить значения, потому что вы передаете ссылку.

4
ответ дан 14 December 2019 в 04:40
поделиться

Создайте глобальную переменную или объект. Или, если вас беспокоят другие функции, обращающиеся к переменным и изменяющие их, сделайте одноэлементный. Другой вариант - вернуть объект. Примерно так

function TOPOSFiscalPrinter.DirectIO(Command: Integer; var pData: Integer;
  var pString: WideString): Integer;

function TOPOSFiscalPrinter.DirectIO(Command, pData, pString){
    ....

    var pObj = {
        d: 0,
        s: '',
        code: ''
    }
    pObj.d = pDataAltertedValue;
    pObj.s = pStringAltertedValue;
    pObj.code = code;
    return pObj;
}

function test() 
{
    var d=1, s="DIRECIO:";
    var r = opos.DirectIO(1024, d, s);
    code = r.code;
    d = r.d;
    s = r.s;



    alert(d); alert(s);
}
1
ответ дан 14 December 2019 в 04:40
поделиться

В JavaScript нет поддержки выходных параметров. Упакуйте то, что вы хотите вернуть в объект автоматизации, присвойте значения его свойствам и верните их, или, если ваше возвращаемое значение уже занято, создайте класс, который имеет свойства, которые вы можете назначить в своем ActiveX, и добавьте параметр, тип которого учебный класс. В вашем ActiveX вы можете использовать IDispatch / Ex для получения / установки свойств.

2
ответ дан 14 December 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: