读书人

小弟我也来重复造个轮子吧 ,发布一个利

发布时间: 2012-10-26 10:30:59 作者: rapoo

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

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

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



这是一个利用prototype(原型,不是指那个叫做prototype.js的框架) ,在Javascript中实现类机制的简单框架.

虽然目前这类框架有很多, 但是在实际工作中,它们往往在功能/性能/易用性等方面并不能完全符合我的需求.

因此我结合了一些现有框架的特点 再加入一点点自己的原创的东西, 就有了这个框架.

当然 这个框架在并不能说是"集百家之长",它功能/性能/易用性等方面也不是最好,只能说它是一个"更符合我自己期望和使用习惯"的实现.

至于是否符合您的需求, 那就不敢保证了, 不过还是希望您可以提出宝贵的建议和意见, 谢谢了 .



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

简单示例:

1 创建类





关于 "2 继承" 的部分

# classname : 'Bar', //类名,可选,
# method3 : function(a3){
#
# Bar.$superclass.method2.apply(this, [a3]); //调用父类里的其他方法.
#
# /* 此处要注意
# Bar.$superclass.method2.apply(this, [a3])
# Bar.$superclass.method2(a3)
# this.method2(a3)
# 三者的异同
# */
# } 2 楼 shiren1118 2011-01-07 /*类机制定义*/
window.Class = function(name, src) {
src.constructor.prototype = src;
window[name] = src.constructor;
};


/*自定义类*/
Class("Msg", {
constructor: function(s) {
alert(s);
}
});

/*自定义类*/
Class("Stack", {
constructor: function() {
this.items = [];
},
add : function(item){
this.items.push(item);

//栈中允许最大长度
if(this.items.length > 100000){
this.items.shift();
}
},
remove : function(item){
var s = [];

//移除item,然后遍历,把剩下发的赋值给items
for(var i = 0, len = this.items.length; i < len; i++) {
if(this.items[i] != item){
s.push(this.items[i]);
}
}

items = s;
},
getCount : function(){
//返回栈的大小
return this.items.length;
},
next : function(){
//出栈操作,返回最后入栈的值
return this.items.pop();
},
say: function(msg){
//测试栈的大小
alert(msg+' --- Stack count:= '+this.items.length);
}
});
3 楼 shiren1118 2011-01-07 个人觉得alzui的类极致实现的最好最优雅
alzui说明
http://wmingjian.iteye.com/blog/438202
演化过程
http://wmingjian.iteye.com/blog/438211

cicyui的也不错,优雅不足
http://cicyui.com/bbs/viewthread.php?tid=247&extra=page%3D1



ext和yui就不用说了

读书人网 >JavaScript

热点推荐