我也来重复造个轮子吧 ,发布一个利用原型,在Javascript中实现类机制的简单框架: GT-Class...

我也来重复造个轮子吧 ,发布一个利用prototype(原型,不是指那个叫做prototype.js的框架),在Javascript中实现类机制的简单框架: GT-Class .

源码&示例: [url]https://github.com/finscn/GT-Class[/url]

=========================


这是一个利用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 文件的源码.
源码中有较详细的注释和示例 ( 只有中文 ).
希望有朋友愿意能帮忙翻译成英文 :)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值