对象调用方法、设备和存储介质技术

技术编号:21199540 阅读:25 留言:0更新日期:2019-05-25 01:09
本发明专利技术提供一种对象调用方法、设备和存储介质,该方法包括:在JavaScript中调用预配置的第一对象创建函数以创建第一go对象;其中,创建第一go对象包括生成第一go对象的第一对象id,以及,生成并存储第一go对象的第一对象指针与第一对象id的关联关系;第一对象id的类型为整数;第一对象创建函数根据第一go类配置生成,第一go类还配置有通过对象id查找对象指针的第一调用函数,第一调用函数通过对象id查找对象指针;在JavaScript中通过传递的第一对象id调用第一调用函数以调用第一go对象。本发明专利技术通过传递类型为整数的对象id查找到对象指针,实现在JavaScript中对go类创建对象的调用。

Object invocation methods, devices, and storage media

The invention provides an object invocation method, device and storage medium, which includes: calling a pre-configured first object creation function in JavaScript to create a first go object; where creating a first go object includes generating the first object ID of the first go object, and generating and storing the relationship between the first object pointer of the first go object and the first object id; The type of ID is an integer; the first object creation function is generated according to the configuration of the first go class. The first go class is also configured with the first calling function to find the object pointer through the object id, the first calling function to find the object pointer through the object id, and the first calling function to call the first go object through the first object ID passed in JavaScript. The invention finds the object pointer by passing the object ID of integer type, and realizes the call of creating object of go class in JavaScript.

【技术实现步骤摘要】
对象调用方法、设备和存储介质
本申请涉及计算机
,具体涉及一种对象调用方法、设备和存储介质。
技术介绍
当前存在已实现JavaScript代码在go语言的虚拟机中运行的方案,上述方案中同时还实现了上述两种语言的代码进行函数级别的相互调用。然而在上述方案中,当前还没有一种通用的方法可以实现在JavaScript中调用go类创建的对象。
技术实现思路
鉴于现有技术中的上述缺陷或不足,期望提供一种实现在JavaScript中调用go类创建对象的对象调用方法、设备和存储介质。第一方面,本专利技术提供一种对象调用方法,包括:在JavaScript中调用预配置的第一对象创建函数以创建第一go对象;其中,创建第一go对象包括生成第一go对象的第一对象id,以及,生成并存储第一go对象的第一对象指针与第一对象id的关联关系;第一对象id的类型为整数;第一对象创建函数根据第一go类配置生成,第一go类还配置有通过对象id查找对象指针的第一调用函数,第一调用函数通过对象id查找对象指针;在JavaScript中通过传递的第一对象id调用第一调用函数以调用第一go对象。第二方面,本专利技术还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本专利技术各实施例提供的对象调用方法。第三方面,本专利技术还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本专利技术各实施例提供的对象调用方法。本专利技术诸多实施例提供的对象调用方法、设备和存储介质通过为go类创建的对象配置整数类型的对象id,生成并存储该对象的对象id与对象指针的关联关系,为go类配置调用函数,从而通过传递类型为整数的对象id查找到对象指针,实现在JavaScript中对go类创建对象的调用。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1为本专利技术一实施例提供的一种对象调用方法的流程图。图2为图1所示方法的一种实施方式中步骤S201的流程图。图3为图1所示方法的一种优选实施方式的流程图。图4为本专利技术一实施例提供的一种设备的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。图1为本专利技术一实施例提供的一种对象调用方法的流程图。如图1所示,在本实施例中,本专利技术提供一种对象调用方法,包括:S20:在JavaScript中调用预配置的第一对象创建函数以创建第一go对象;其中,创建第一go对象包括:S201:生成第一go对象的第一对象id;以及,S202:生成并存储第一go对象的第一对象指针与第一对象id的关联关系;第一对象id的类型为整数;第一对象创建函数根据第一go类配置生成,第一go类还配置有通过对象id查找对象指针的第一调用函数,第一调用函数通过对象id查找对象指针;S30:在JavaScript中通过传递的第一对象id调用第一调用函数以调用第一go对象。以如下所示的go类为例:typeCountstruct{countint64}func(c*Count)PlusOne(){c.count++}在现有的方案中,由于无法实现指针的传递,导致在JavaScript中无法调用根据该go类生成的对象。在本专利技术提供的方案中,为上述go类预配置有如下所示的第一对象创建函数:以及,如下所示的第一调用函数:上述第一对象创建函数和第一调用函数根据上述go类生成,可以由编程人员配置存储,也可以通过脚本工具自动生成并配置存储。在步骤S20中,在JavaScript中通过调用上述第一对象创建函数new_count()创建一个go对象,创建该go对象的过程中会生成一个整数类型(在本实施例中配置为int64)的对象id,并在哈希表中配置该对象id和该go对象的对象指针的对应关系。图2为图1所示方法的一种实施方式中步骤S201的流程图。如图2所示,在本实施例中,步骤S201包括:S2011:将第一对象id赋值为第一整数;S2012:根据已存储的关联关系判断第一整数是否已被使用:是,则修改第一对象id的赋值,并循环当前步骤。例如,在步骤S2011中,将对象id赋值为0;在步骤S2012中,根据存储的哈希表判断是否已存在值为0的对象id:是,则令对象id的赋值加1,并循环步骤S2012,根据存储的哈希表判断是否已存在值为1的对象id:否,则进入步骤S202,将值为1的对象id与该go对象的对象指针的对应关系存入哈希表。优选地,上述第一整数不大于253-1。将第一整数配置为不大于253-1的原因在于253-1是JavaScript中能安全标示的最大整数,该配置可以保障该方法的可靠性。在go对象的个数累积达到253个之前,步骤S2012中采用每次递增1(例如初始值为1)或递减1(例如初始值为253-1)的修改方式不会发生对象id重复的问题;当系统运行时间非常久,go对象的个数累积达到253个时,对象id的赋值将重新从初始值(例如1或253-1)开始循环,由于此时距离前一次生成相同对象id的go对象的时间已过了非常久,前一次生成的相同对象id的go对象通常已经释放,因此也不会造成冲突。在本实施例中,执行本专利技术提供方法的设备中的各go对象的对象id与对象指针的对应关系存在同一哈希表中,因此在步骤S201中需要判断对象id是否已使用;在更多实施例中,当各go对象的对象id与对象指针的对应关系存储在不同位置时,则步骤S201可以无需判断对象id是否重复。在步骤S30中,在JavaScript中通过传递的上述值为1的对象id调用上述第一调用函数count_plus_one(idint64),第一调用函数通过对象id在哈希表中查找出该go对象的对象指针,从而实现对该go对象的调用。上述实施例以一个简单的Count类为例进行了示例性的说明,在更多实施例中,本专利技术提供的上述对象调用方法可适用于任意的go类,可实现相同的技术效果。在本实施例中,通过哈希表实现对象id与对象指针的关联映射;在更多实施例中,还可以通过本领域常用的其它存储结构来存储对象id与对象指针的关联关系,可实现相同的技术效果。图3为图1所示方法的一种优选实施方式的流程图。如图3所示,在一优选实施例中,步骤S20之前还包括:S10:根据第一go类生成第一对象创建函数和第一调用函数。具体地,图3所示方法与图1所示方法的区别在于,在图3所示的方法中,系统中未预配置go类的对象创建函数和调用函数,而是在需要在JavaScript中调用时,通过脚本工具自动生成并配置go类的对象创建函数和调用函数,以供步骤S20和步骤S30进行调用。根据上述图1所示方法中所例举的示例,本领域技术人员可以理解,可以根据配置生成对象id、配置存储对象id与对象指针的关联关系、返回对象id的方式自动生成对象创建函数,并根据通过传递的对象id查找对象指针、根据查找到的本文档来自技高网...

【技术保护点】
1.一种对象调用方法,其特征在于,包括:在JavaScript中调用预配置的第一对象创建函数以创建第一go对象;其中,所述创建第一go对象包括生成所述第一go对象的第一对象id,以及,生成并存储所述第一go对象的第一对象指针与所述第一对象id的关联关系;所述第一对象id的类型为整数;所述第一对象创建函数根据第一go类配置生成,所述第一go类还配置有通过对象id查找对象指针的第一调用函数,所述第一调用函数通过对象id查找对象指针;在JavaScript中通过传递的所述第一对象id调用所述第一调用函数以调用所述第一go对象。

【技术特征摘要】
1.一种对象调用方法,其特征在于,包括:在JavaScript中调用预配置的第一对象创建函数以创建第一go对象;其中,所述创建第一go对象包括生成所述第一go对象的第一对象id,以及,生成并存储所述第一go对象的第一对象指针与所述第一对象id的关联关系;所述第一对象id的类型为整数;所述第一对象创建函数根据第一go类配置生成,所述第一go类还配置有通过对象id查找对象指针的第一调用函数,所述第一调用函数通过对象id查找对象指针;在JavaScript中通过传递的所述第一对象id调用所述第一调用函数以调用所述第一go对象。2.根据权利要求1所述的方法,其特征在于,所述生成所述第一go对象的第一对象id包括:将所述第一对象id赋值为第一整数;根据已存储的关联关系判断所述第一整数是...

【专利技术属性】
技术研发人员:王志文吴思进
申请(专利权)人:杭州复杂美科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1