当 hprose 序列化对象时,需要知道对象的类名,但有时候,对象的构造器函数可能是个匿名函数,并没有函数名。或者我们在不同的语言中定义的类名可能不同,但结构相同或相近,我们希望这些定义不同的类的对象可以相互传递。那么就需要使用该方法来进行注册,注册成统一的别名之后,就可以相互传递了。

    其中 表示要注册的类(对象的构造器函数),alias 表示注册的别名。例如:

    1. var User = function() {
    2. this.age = 18;
    3. }
    4.  
    5. hprose.ClassManager.register(User, 'User');

      注意上面的别名中,不是使用 做分隔符的,而是使用 ,hprose 之所以这样做是因为有些语言不支持名称空间(NameSpace),还有些语言的名称空间(NameSpace)和类名之间不是使用 分隔符的,因此这里统一成 ,这样既可以支持没有名称空间(NameSpace)的语言,也可以支持具有名称空间(NameSpace)的语言。

      因为该方法比较常用,所以 hprose 还提供了一个简单的写法:

      1. hprose.ClassManager.getClassAlias(class);
      1. hprose.register(User, 'my_package_User');
      2. console.log(hprose.ClassManager.getClassAlias(User));

      输出结果为:


      1. hprose.ClassManager.getClass(alias);

      通过别名来查找注册的类。例如: