我也来重复造个轮子吧 ,发布一个利用prototype(原型,不是指那个叫做prototype.js的框架),在Javascript中实现类机制的简单框架: GT-Class .
源码&示例:
https://github.com/finscn/GT-Class
=========================
这是一个利用prototype(原型,不是指那个叫做prototype.js的框架) ,在Javascript中实现类机制的简单框架.
虽然目前这类框架有很多, 但是在实际工作中,它们往往在功能/性能/易用性等方面并不能完全符合我的需求.
因此我结合了一些现有框架的特点 再加入一点点自己的原创的东西, 就有了这个框架.
当然 这个框架在并不能说是"集百家之长",它功能/性能/易用性等方面也不是最好,只能说它是一个"更符合我自己期望和使用习惯"的实现.
至于是否符合您的需求, 那就不敢保证了, 不过还是希望您可以提出宝贵的建议和意见, 谢谢了
.
=========================
简单示例:
1 创建类
//方式1 :
var Foo = GT.Class.create( function(args){
/* 构造函数 */
},
{
classname : 'Foo', //类名,可选. 设置后,可通过 GT.Class.forName(classname) 得到类.
//以下为类的成员
att1 : 1 ,
att2 : 2 ,
method1 : function(){ },
method2 : function(){ }
} );
//方式2 :
var Foo =function(args){
/* 构造函数 */
}
Foo.prototype.att1=1;
Foo.prototype.method1=function(){ };
GT.Class.create( Foo,
//注意:之前Foo.prototype里定义的成员,会被这里定义的"同名成员"覆盖.
{
classname : 'Foo', //类名,可选,
//以下为类的成员
att2 : 2 ,
method2 : function(){ }
} );
2 继承 :
var Bar = GT.Class.create( function(args){
/* 构造函数 */
},
{
classname : 'Bar', //类名,可选,
//以下为类的成员
att2 : 3 ,
// 覆盖了父类里的同名方法
method1 : function(a){
this.$super(a); //调用父类的同名方法
},
method3 : function(a3){
Bar.$superclass.method2.apply(this, [a3]); //调用父类里的其他方法.
/* 此处要注意
Bar.$superclass.method2.apply(this, [a3])
Bar.$superclass.method2(a3)
this.method2(a3)
三者的异同
*/
}
},
Foo //父类
);
//如果子类没什么要做的, 可以直接
var Bar = GT.Class.create( function(args){
/* 构造函数 */
},
Foo //父类
);
// 以上为 直接创建一个"某父类的子类", 我们也可以先创建好两个类, 然后后期再指定继承关系.
// "子类"必须是通过 GT.Class.create创建的类
子类.$extend(父类);
// "父类"必须是通过 GT.Class.create创建的类
父类.$create(子类);
=================
更多详细的说明和用法 见 gt-class.js 和 gt-class-example.html 文件的源码.
源码中有较详细的注释和示例 ( 只有中文 ).
希望有朋友愿意能帮忙翻译成英文
分享到:
相关推荐
幼儿托班语言教案::童话-一只大轮子(通用).doc
在IT行业中,"重复造轮子,表单验证"是一个常见的议题,特别是在软件开发中。当我们谈论表单验证时,通常是指在用户提交数据到服务器之前,在客户端(通常是Web浏览器)进行的数据验证过程。这个过程确保了用户输入...
在本文中,我们将深入探讨Vue.js框架中的数据绑定实现,这是现代前端开发中的一个重要概念。Vue.js通过利用JavaScript的`Object.defineProperty()`方法实现了数据绑定,使得数据的变更能够自动反映到视图上,同时也...
很多时候,都听人家在说不要重复制造轮子,要站在巨人的肩膀上等....不过让我感到有点困惑的是,怎么样才叫做不要重复制造轮子?如何才能站在巨人的肩旁上?现在网络如此发达,资源如此丰富,开源社区也发展的很好。...
项目中常见的代码进行了封装,或是封装到基类中、或是封装到工具类中、或者封装到框架中,不追求过度封装,根据实际场景和代码维护性考虑,尽量保证同一个功能的代码在项目中不重复。 对小屏手机、全面屏手机、带...
"天天造轮子手写面试常见源码.zip"这个压缩包显然包含了与JavaScript面试相关的代码实现,可能是对常见算法、设计模式或者JavaScript核心概念的实战示例。通过分析其中的"wheel-awesome_master.zip"和"说明.txt",...
jQuery作为一个非常流行的JavaScript库,其实现中也运用了许多设计模式。本书中提到了几种关键的设计模式: - **Composite Pattern(组合模式)**:将对象组合成树形结构以表示部分-整体层次结构。 - **适配器模式*...
这个项目不仅为我们提供了一个学习Vue.js设计理念和机制的良好平台,还为开发者们提供了在实际应用中尝试和理解MVVM模式的机会。 MVVM(Model-View-ViewModel)是一种设计模式,它将数据模型、视图和视图模型紧密...
uPattern是一个模式实现单元,没有足够的时间也没有那么多精力去实现所有的模式,于是在这份源代码里,您发现您可以使用一个用户组来登录,本来这是不允许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现...
创建一个框架是一个复杂而有挑战性的任务,涉及到深入理解软件设计原则、编程语言特性和目标用户的实际需求。以下是一些关于构建一个框架的详细步骤,以创建一个Java平台上的轻量级、零配置、易用且高度可扩展的Web ...
- **提高开发效率**:通过使用预定义的框架结构,开发者可以避免重复造轮子,从而将更多的精力集中在业务逻辑的实现上。 - **确保代码质量**:框架通常遵循最佳实践,并经过社区的广泛测试,因此可以显著提高代码的...
uPattern是一个模式实现单元,没有足够的时间也没有那么多精力去实现所有的模式,于是在这份源代码里,您发现您可以使用一个用户组来登录,本来这是不允许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现...
下面是一个简单的示例,演示如何使用JQuery验证框架来验证一个包含姓名和邮箱的表单: ```html <!DOCTYPE html> <html lang="zh-CN"> <meta charset="UTF-8"> <title>JQuery验证框架示例 ...
在这个场景中,“swt table 自己造个轮子”指的是使用SWT(Standard Widget Toolkit)库来创建一个自定义的表格组件。SWT是Eclipse项目的一部分,它提供了一套原生的GUI组件,用于Java应用程序,提供了与操作系统更...
- **自造轮子**:鉴于现有工具和技术的局限性,开发者可能会选择自行构建满足特定需求的服务框架。 #### 面临的挑战 - **技术选型**:选择合适的技术栈和工具并不容易,尤其是当现有的解决方案无法完全满足需求时。...
# 【Unity造轮子】实现一个类csgo的武器轮盘功能 # 作者信息 姓名:向宇 博客:[https://xiangyu.blog.csdn.net/](https://xiangyu.blog.csdn.net/) # 文章说明: ...
简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。 速度:PyTorch 的灵活性不以速度为代价,在许多...
在实现一个小型的Vuejs项目中,我们可以深入理解其核心原理,包括数据响应式、虚拟DOM以及指令系统等关键概念。 1. **数据响应式**: 数据响应式是Vue.js的一个核心特性,它使得当数据变化时,视图能够自动更新。...
在Web开发中,框架的作用是提供一个结构化的环境,让开发者能够专注于编写应用的核心功能,而不是重复造轮子。Python-COBOL框架可能会提供以下核心组件: 1. **路由系统**:Python中负责映射URL到特定的COBOL处理...