CN102508667B - 一种使用第三方的JavaScript库的方法和装置 - Google Patents
一种使用第三方的JavaScript库的方法和装置 Download PDFInfo
- Publication number
- CN102508667B CN102508667B CN201110357777.XA CN201110357777A CN102508667B CN 102508667 B CN102508667 B CN 102508667B CN 201110357777 A CN201110357777 A CN 201110357777A CN 102508667 B CN102508667 B CN 102508667B
- Authority
- CN
- China
- Prior art keywords
- cache object
- target class
- class
- tackled
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种使用第三方的JavaScript库的方法,通过对待拦截的方法即需要修改才能实现需要的方法增加处理逻辑,来达到需要的逻辑实现。基于同样地发明构思,本发明还提出一种使用第三方的JavaScript库的装置,能够在不修改第三方的JavaScript库的源代码的基础上使用第三方的JavaScript库,降低维护和开发的复杂性。
Description
技术领域
本发明涉及计算机领域,特别涉及一种使用第三方的JavaScript库的方法和装置。
背景技术
随着信息技术的发展,计算机应用越来越广泛,各种应用系统相继而生,BS的WEB应用项目也越来越多,并且在用户交互的界面开发上变得越来越广泛和重要。
BS结构的WEB应用在界面上主要通过JavaScript来控制HTML标签,在JavaScript的使用方面也从原来简单的使用到复杂的使用,主要体现在界面的美观控制、界面的交付过程,特别是在JavaScript的AJAX技术发展下,JavaScript技术更是必不可少的。
目前BS项目中,基本上没有不使用JavaScript技术来开发,相关的JavaScript的三方库也越来越多,在网上搜寻可以发现:ExtJS、GoogleMap等都采用了丰富的JavaScript。
在具体的应用项目开发过程中,作为BS的WEB应用,那就需要采用大量的JavaScript来开发项目,也会使用大量的JavaScript三方库。但是,针对三方的JavaScript库,提供的功能比较固定,在某些方面不是很适合具体的应用项目,总是在现有的三方库功能上缺少部分我们需要的功能。
针对上面的情况,一般的处理方式是修改三方库来完成,这样带来了三方库的维护和开发的复杂性,并且需要三方库的源代码。
发明内容
有鉴于此,本发明提供一种使用第三方的JavaScript库的方法和装置。能够在不修改第三方的JavaScript库的源代码的基础上使用第三方的JavaScript库,降低维护和开发的复杂性。
为解决上述技术问题,本发明的技术方案是这样实现的:
一种使用第三方的JavaScript库的方法,所述方法包括:
生成缓存对象,遍历任一源类中的属性和方法,并将所述源类中的属性和方法缓存到所述缓存对象中;
生成与源类相同的目标类,并将所述缓存对象中待拦截的方法重新实现逻辑并缓存到所述目标类中;
将所述缓存对象中其他的方法和属性缓存到所述目标类中。
一种使用第三方的JavaScript库的装置,所述装置包括:生成单元、获取单元、逻辑单元和复制单元;
所述生成单元,用于生成缓存对象;生成与源类相同的目标类;
所述获取单元,用于遍历任一源类中的属性和方法,并将所述源类中的属性和方法缓存到所述生成单元生成的缓存对象中;
所述逻辑单元,用于将所述缓存对象中待拦截的方法重新实现逻辑并缓存到所述生成单元生成的目标类中;
所述复制单元,用于将所述缓存对象中其他的方法和属性缓存到所述生成单元生成的目标类中。
综上所述,本发明通过对待拦截的方法即需要修改才能实现需要的方法增加处理逻辑,来达到需要的逻辑实现。能够在不修改第三方的JavaScript库的源代码的基础上使用第三方的JavaScript库,降低维护和开发的复杂性。
附图说明
图1为本发明实施例中使用第三方的JavaScript库的方法流程示意图;
图2为本发明具体实施例中使用第三方的JavaScript库的装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
本发明在使用第三方的JavaScript库时,通过对待拦截的方法增加逻辑来使用第三方的JavaScript库。
参见图1,图1为本发明实施例中使用第三方的JavaScript库的方法流程示意图。具体步骤为:
步骤101,生成缓存对象,遍历任一源类中的属性和方法,并将源类中的属性和方法缓存到缓存对象中。
第三方的JavaScript库中至少存在一个类,本发明对任一类的处理过程均一致。本步骤中生成一个缓存对象,用于缓存任一类中所有方法和属性。
步骤102,生成与源类相同的目标类,并将缓存对象中待拦截的方法重新实现逻辑并缓存到目标类中。
本步骤中将不能直接用的方法进行拦截,这里待拦截方法即不能直接使用但是需要修改之后可使用的方法。这里的重新实现逻辑并不是修改源代码,而是在原先逻辑上增加新的逻辑来重新实现原方法的逻辑。
步骤103,将缓存对象中其他的方法和属性缓存到目标类中。
本步骤中对一些可以直接用的方法,即不进行拦截的方法,在创建目标类的时候可能丢失,因此需要将其他的即其他的方法和属性缓存到目标类中。
步骤102中,将目标类中待拦截的方法重新实现逻辑的方法为:
调用缓存对象中的待拦截的方法,为待拦截的方法增加处理逻辑,并缓存到所述目标类中。
其中,为待拦截的方法增加处理逻辑的方法为:
调用并执行缓存对象中待拦截方法,缓存执行的结果;
在待拦截方法前、后,或,前和后增加拦截逻辑并执行,缓存执行的结果。
在增加的逻辑中可以修改原有方法的参数和返回值,也能够修改原有方法所在对象的成员变量。
调用缓存对象中待拦截方法通过call或apply方式调用。
步骤103中,将缓存对象中其他的方法和属性缓存到目标类中的方法为:
若目标类中其他的方法和属性丢失,则将缓存对象中其他的方法缓存到目标类中;若目标类中其他的方法和属性存在未丢失的,则将缓存对象中其他的方法覆盖目标类中其他的方法。
基于上述同样的发明构思,本发明还提出一种使用第三方的JavaScript库的装置。该装置用于能够执行JavaScript的计算机上。参见图2,图2为本发明具体实施例中使用第三方的JavaScript库的装置的结构示意图。该装置包括:生成单元201、获取单元202、逻辑单元203和复制单元204。
生成单元201,用于生成缓存对象;生成与源类相同的目标类。
获取单元202,用于遍历任一源类中的属性和方法,并将源类中的属性和方法缓存到生成单元201生成的缓存对象中。
逻辑单元203,用于将缓存对象中待拦截的方法重新实现逻辑并缓存到生成单元201生成的目标类中。
复制单元204,用于将缓存对象中其他的方法和属性缓存到生成单元204生成的目标类中。
较佳地,
逻辑单元203,用于调用缓存对象中的待拦截的方法,为待拦截的方法增加处理逻辑,并缓存到目标类中。
较佳地,
逻辑单元203,用于调用并执行缓存对象中待拦截方法,缓存执行的结果;在待拦截方法前、后,或,前和后增加拦截逻辑并执行,缓存执行的结果。
较佳地,
逻辑单元203,用于通过call或apply方式调用缓存对象中待拦截方法。
较佳地,
复制单元204,用于若目标类中其他的方法和属性丢失,则将缓存对象中其他的方法缓存到目标类中;若目标类中其他的方法和属性存在未丢失的,则将缓存对象中其他的方法覆盖所述目标类中其他的方法。
上述实施例的单元可以集成于一体,也可以分离部署;可以合并为一个单元,也可以进一步拆分成多个子单元。
综上所述,本发明通过对待拦截的方法即需要修改才能实现需要的方法增加处理逻辑,来达到需要的逻辑实现。能够在不修改第三方的JavaScript库的源代码的基础上使用第三方的JavaScript库,降低维护和开发的复杂性。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种使用第三方的JavaScript库的方法,其特征在于,所述方法包括:
生成缓存对象,遍历任一源类中的属性和方法,并将所述源类中的属性和方法缓存到所述缓存对象中;
生成与源类相同的目标类,并将所述缓存对象中待拦截的方法重新实现逻辑并缓存到所述目标类中;
所述将所述目标类中待拦截的方法重新实现逻辑的方法为:
调用所述缓存对象中的待拦截的方法,为所述待拦截的方法增加处理逻辑;
所述为所述待拦截的方法增加处理逻辑的方法为:
调用并执行所述缓存对象中所述待拦截方法,缓存执行的结果;
在所述待拦截方法前、后,或,前和后增加拦截逻辑并执行,缓存执行的结果;
将所述缓存对象中其他的方法和属性缓存到所述目标类中。
2.根据权利要求1所述的方法,其特征在于,所述调用所述缓存对象中该待拦截方法为,通过call或apply方式调用所述缓存对象中待拦截方法。
3.根据权利要求1或2所述的方法,其特征在于,所述将所述缓存对象中其他的方法和属性缓存到所述目标类中的方法为:
若所述目标类中其他的方法和属性丢失,则将所述缓存对象中其他的方法缓存到所述目标类中;若所述目标类中其他的方法和属性存在未丢失的,则将所述缓存对象中其他的方法覆盖所述目标类中其他的方法。
4.一种使用第三方的JavaScript库的装置,其特征在于,所述装置包括:生成单元、获取单元、逻辑单元和复制单元;
所述生成单元,用于生成缓存对象;生成与源类相同的目标类;
所述获取单元,用于遍历任一源类中的属性和方法,并将所述源类中的属性和方法缓存到所述生成单元生成的缓存对象中;
所述逻辑单元,用于将所述缓存对象中待拦截的方法重新实现逻辑并缓存到所述生成单元生成的目标类中;
其中,所述逻辑单元,具体用于将所述缓存对象中待拦截的方法重新实现逻辑时,调用所述缓存对象中的待拦截的方法,为所述待拦截的方法增加处理逻辑;
其中,所述逻辑单元,具体用于为所述待拦截的方法增加处理逻辑时,调用并执行所述缓存对象中所述待拦截方法,缓存执行的结果;在所述待拦截方法前、后,或,前和后增加拦截逻辑并执行,缓存执行的结果;
所述复制单元,用于将所述缓存对象中其他的方法和属性缓存到所述生成单元生成的目标类中。
5.根据权利要求4所述的装置,其特征在于,
所述逻辑单元,用于通过call或apply方式调用所述缓存对象中待拦截方法。
6.根据权利要求4或5所述的装置,其特征在于,
所述复制单元,用于若所述目标类中其他的方法和属性丢失,则将所述缓存对象中其他的方法缓存到所述目标类中;若所述目标类中其他的方法和属性存在未丢失的,则将所述缓存对象中其他的方法覆盖所述目标类中其他的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110357777.XA CN102508667B (zh) | 2011-11-11 | 2011-11-11 | 一种使用第三方的JavaScript库的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110357777.XA CN102508667B (zh) | 2011-11-11 | 2011-11-11 | 一种使用第三方的JavaScript库的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102508667A CN102508667A (zh) | 2012-06-20 |
CN102508667B true CN102508667B (zh) | 2014-06-18 |
Family
ID=46220759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110357777.XA Active CN102508667B (zh) | 2011-11-11 | 2011-11-11 | 一种使用第三方的JavaScript库的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102508667B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111841B (zh) * | 2014-08-08 | 2017-03-08 | 浪潮软件股份有限公司 | 一种微内核web开发框架的实现方法 |
CN109508184A (zh) * | 2017-09-14 | 2019-03-22 | 韩真 | 一种命令行中浏览编辑对象的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895581B1 (en) * | 2000-03-30 | 2005-05-17 | Microsoft Corporation | Replaceable classes and virtual constructors for object-oriented programming languages |
CN101162428A (zh) * | 2007-11-22 | 2008-04-16 | 上海交通大学 | 软件动态演化中构件运行时状态的获取和转换方法 |
CN101174217A (zh) * | 2007-11-22 | 2008-05-07 | 上海交通大学 | Java程序可动态更新化实现方法 |
-
2011
- 2011-11-11 CN CN201110357777.XA patent/CN102508667B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895581B1 (en) * | 2000-03-30 | 2005-05-17 | Microsoft Corporation | Replaceable classes and virtual constructors for object-oriented programming languages |
CN101162428A (zh) * | 2007-11-22 | 2008-04-16 | 上海交通大学 | 软件动态演化中构件运行时状态的获取和转换方法 |
CN101174217A (zh) * | 2007-11-22 | 2008-05-07 | 上海交通大学 | Java程序可动态更新化实现方法 |
Non-Patent Citations (2)
Title |
---|
深入研究Java的类加载机制;赵宇等;《唐山师范学院学报》;20100331;第32卷(第2期);第81-85页 * |
赵宇等.深入研究Java的类加载机制.《唐山师范学院学报》.2010,第32卷(第2期), |
Also Published As
Publication number | Publication date |
---|---|
CN102508667A (zh) | 2012-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11108758B2 (en) | Reactive programming subscription context | |
US9720949B2 (en) | Client-side partition-aware batching of records for insert operations | |
MX2022009221A (es) | Editor para generar graficos computacionales. | |
KR101740093B1 (ko) | 타일 통신 연산자 | |
Francesquini et al. | On the energy efficiency and performance of irregular application executions on multicore, NUMA and manycore platforms | |
CN106250128A (zh) | 用户界面的显示处理方法及装置 | |
CN102799424B (zh) | 一种敏捷式高效分层服务器端接口架构的实现方法 | |
CN110476173A (zh) | 利用强化学习的分层设备放置 | |
CN102508667B (zh) | 一种使用第三方的JavaScript库的方法和装置 | |
EP4070223B1 (en) | Using secure multi-party computation to improve content selection process integrity | |
Vikas et al. | Pyjama: OpenMP-like implementation for Java, with GUI extensions | |
Takafuji et al. | C2CU: a CUDA C program generator for bulk execution of a sequential algorithm | |
Dabah et al. | Hybrid multi-core CPU and GPU-based B&B approaches for the blocking job shop scheduling problem | |
US20190004776A1 (en) | Data marshalling optimization via intermediate representation of workflows | |
CN107180168A (zh) | 文件加载、生成方法和装置,以及智能终端 | |
US20120072411A1 (en) | Data representation for push-based queries | |
Fonseca et al. | Controlling the granularity of automatic parallel programs | |
CN104199984B (zh) | 一种实现功能库的动态引用的方法和装置 | |
Ren et al. | Extracting SIMD parallelism from recursive task-parallel programs | |
KR20230048126A (ko) | 보안 다자간 연산을 사용한 암호화 보안 제어 | |
Yang et al. | Managing asynchronous operations in Coarray Fortran 2.0 | |
CN110069243A (zh) | 一种java程序线程优化方法 | |
CN104317590A (zh) | 嵌入式配置系统及嵌入式配置审核流程的方法 | |
Milutinović et al. | Accelerating program execution using hybrid control flow and dataflow architectures | |
CN101963900A (zh) | Ui层的行为传播控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |