Как передать переменную по ссылке в javascript? Чтение данных из функции ActiveX, которая возвращает более одного значения

У меня есть объект ActiveX, который я хочу использовать в браузере (javascript).
Есть функция, которую я хочу вызвать. Его прототип:

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

Таким образом, функция возвращает три значения: код результата, pData и pString;
В javascript функция не обновляет переменные pData и pString;

  • Обновление IIS / Classic ASP Javascript / JScript Scripting Engines (до Chakra?)
  • Включение файла .js в файл .js
  • Значения переменных boolean в PHP для реализации javascript
  • Как указать порядок свойств в объекте javascript для индекса MongoDB в node.js?
  • Телефонная книга - выберите изображение из галереи
  • Значение, возвращаемое заданием
  •  function test() { var d=1, s="DIRECIO:"; var code = opos.DirectIO(1024, d, s); alert(d); alert(s); } 

    Переменные d и s не обновляются. Они должны быть d = 0 и s = «ED123456»;
    Как читать данные из функции, которая возвращает более одного значения в javascript?

    РЕДАКТИРОВАТЬ
    По-видимому, Javascript всегда передает параметры по значению, а не по ссылке.
    Есть ли что-нибудь, что я могу сделать, чтобы передать значения по ссылке в Javascript, или мне придется изменить свой дизайн, чтобы полагаться только на параметры, переданные значением и на возвращаемые значения.

  • ActiveXObject в IE8
  • Работа с параметрами «Out» в JavaScript
  • Создать текстовый файл с помощью javascript
  • Открытие Outlook через javascript
  • Вызов функции .dll с html-страницы, которая работает на chrome и firefox
  • Как создать, сохранить txt-файл с совместимым с javascript кросс-браузером
  • 4 Solutions collect form web for “Как передать переменную по ссылке в javascript? Чтение данных из функции ActiveX, которая возвращает более одного значения”

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

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

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

     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 = rd; s = rs; alert(d); alert(s); } 

    Примитивы, такие как int или float , всегда передаются по значению по соображениям производительности, но вы можете просто обернуть их, например, Float32Array только один элемент:

     a = new Float32Array([123]) a[0]; // == 123 function ChangeA(a) { a[0] = 333; } ChangeA(a) a[0]; // == 333 
    JavaScript делает сайт умным, красочным и простым использованием.