小弟我想问一下js函数在传参的时候,怎么传递引用类型

我想问一下js函数在传参的时候,如何传递引用类型
对js 值类型引用类型不是很了解,隐约知道几种类型的引用类型的,平时也没见过函数传参有写引用类型的。不知道有没有

是这样的,一个ocx控件暴露的一个方法是带有引用类型的,是别的公司的一个delphi 的dll,然后我按照他的意思封装成了ocx的方法

(下面我随便写了一个,这个是vb,)

Public Function PosRef(ByVal a As String, ByRef b As String) 'b是引用类型
   a = a + ":0001a"
   b = b + ":0002b"
   PosRef = a + b
End Function


当注册这个控件之后,在asp.net前台用js调用的时候

 function t()
        {
            var a = document.getElementById("cpTest");
            var clas = { a: "aaa", b: "bbb" }; //直接定义 var a,var b 也不是啊
            alert(a.PosRef(clas.a, clas.b)); //输出 aaa:0001ab:0002b
            alert(clas.a); //输出 aaa
            alert(clas.b);//输出bbb  这里应该是 bbb:0002b 才对啊
            
        }

我现在想知道的是 js应该怎么做?
如果不能传递引用类型的,那我就还得重新封装一个方法,把所有引用类型的函数的 引用值 通过特殊符号连接然后当做返回值放回来,那里面好多方法呢,这样搞不是蛋疼了。

------解决思路----------------------
先不说能不能在js中调用vb的函数

js中只有对象,数组和函数是引用类型的,其它都不是引用类型的,并且这是固定的,无法单独设定。

注:js的“引用”不同于其它语言的“指针”。“引用”只有在读取时生效,写入时不会生效。

你可以把clas对象本身传给PosRef()函数,在PosRef()函数中修改对象的a和b属性的值即可

------解决思路----------------------
传入对象

js中你不能指定 要引用传值
但是 对象 一定是引用的

那么

Public Function PosRef(ByVal obj As Object) 'b是引用类型
   obj.a = a + ":0001a"
   obj.b = b + ":0002b"
   PosRef = obj.a + obj.b
End Function

我不知道vb对象怎么处理 我乱写的 就是这个意思  传一个对象进来