我也来重复造个轮子吧 ,发布一个利用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
很多时候,都听人家在说不要重复制造轮子,要站在巨人的肩膀上等....不过让我感到有点困惑的是,怎么样才叫做不要重复制造轮子?如何才能站在巨人的肩旁上?现在网络如此发达,资源如此丰富,开源社区也发展的很好。...
uPattern是一个模式实现单元,没有足够的时间也没有那么多精力去实现所有的模式,于是在这份源代码里,您发现您可以使用一个用户组来登录,本来这是不允许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现...
personVue 一个模仿vue实现mvvm框架的简单轮子
uPattern是一个模式实现单元,没有足够的时间也没有那么多精力去实现所有的模式,于是在这份源代码里,您发现您可以使用一个用户组来登录,本来这是不允许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现...
uPattern是一个模式实现单元,没有足够的时间也没有那么多精力去实现所有的模式,于是在这份源代码里,您发现您可以使用一个用户组来登录,本来这是不允许的啊,如果您想找到原因,原来uPattern中对于合成模式的实现...
# 【Unity造轮子】实现一个类csgo的武器轮盘功能 # 作者信息 姓名:向宇 博客:[https://xiangyu.blog.csdn.net/](https://xiangyu.blog.csdn.net/) # 文章说明: ...
简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。 速度:PyTorch 的灵活性不以速度为代价,在许多...
数据描述符(descriptor)和存取描述符均具有以下可选键值:当且仅当该属性的 conBgurable 为 true 时,该属性描述符才能够被改变,同时该属
快速入门原型 此存储库包含常用的 Maven 原型模板。 安装: 查看模板 从命令行转到项目根文件夹。 例如:D:/workspace/muzongyan-quickstart-archetypes/quickstart-springmvc-mybatis 执行以下 maven 命令来安装 ...
在日常开发中,大多数都是在和框架打交道,久而久之便遗忘了原生JS的感觉,个人感觉中原生JS基础还是很重要的,所以最近就利用了空余时间造一个轮子出来,虽然以我的水平造出来的轮子质量还是不太可靠的,但是我觉得...
本项目是我锻炼基本编程水平的代码库,实现的功能早已有相关框架或工具所支持,如MVC,CDI,json解析等,这属于“重复造轮子”,在实际项目中更多的还是选用工业标准的第三方软件,事实上我模仿的框架就是Spring,...
本系统的开发灵感来自 ,这是一个基于Vue和ElementUI的优秀的后台管理系统模板,在这里向大佬致敬! 其实我的主技术栈一直是Vue ,只是最近入坑了React ,看了大半个月文档,就想牛刀小试一下,哈哈。不是有那句话么...
项目中常见的代码进行了封装,或是封装到基类中、或是封装到工具类中、或者封装到框架中,不追求过度封装,根据实际场景和代码维护性考虑,尽量保证同一个功能的代码在项目中不重复。 对小屏手机、全面屏手机、带...
NULL 博文链接:https://basil1292.iteye.com/blog/459911
winform通用开发框架 这个主要就是为了一般管理系统重复避免造轮子,不需要在关注权限 页面等,新增功能只需要新增form界面并完成自己的业务,在系统配置即可。 个人主页有基于该框架开发的简易进销存软件和喷码软件
自己造轮子:一款实用的Android广告栏实现过程2016-01-23 安卓应用频道 安卓应用频道(点击上方公众号,可快速关注)来源:dongjunkun链接:
为避免重复造轮子,功能模块优先考虑现有的国内外成熟开源框架; 框架本身尽量避免复写其它开源框架,以便跟随他们的版本升级。 QA使用说明 QA是一套基于...
含dlib-18.17.100-cp35-none-win_amd64.whl 及dlib-18.17.100-cp35-none-win32.whl