vangle.js-基于面向对象的JavaScript框架

为了方便开发,我编写了一个JavaScript框架,我暂且将其命名为vangle.js,其思想是基于面向对象的编程方法,能够模拟类和接口,实现继承等基本技术。其实,目前已经有大量的相关框架,但是基于面向对象的框架比较少,纵使有,就我所知,也仅仅只是实现了类的继承和类的编写形式,并没有完全模拟类的所以主要部分。虽然,框架并不一定要求是面向对象的,但是,我认为这种编程方法在开发较大项目时有着很大的优势。我编写的框架的灵感来自与mootools框架,但又有不同。

    这里,我列出一些例子来展示如何利用该框架来开发类和接口。

 

类:

 

	var Person = new Class({
		initialize: function(name) {	//必须实现构造方法
			this.name = name;
		},
		name: '',
		setName: function(name) {
			this.name = name;
		},
		getName: function() {
			return this.name;
		}
	});
	var person = new Person("bilipan");
	alert(person.getName());		//输出'bilipan'
	person.setName("bili");
	alert(person.getName());		//输出'bili'

	var Student = new Class({
		initialize: function(name, school) {	
			this.parent(name);	//必须先实现父类的构造方法
			this.school = school;
		},
		extend: Person,
		school: '',
		getSchool: function() {
			return this.school;
		},
		setSchool: function(school) {
			this.school = school;
		}
	});
	var student = new Student('pan', 'szu');
	student.setName('wu');
	alert(student.getName());	//输出'wu'
	alert(student.parents.getName());	//输出'bilipan', 访问父类的方法
	student.setSchool('qinghua university');
	alert(student.getSchool());	//输出'qinghua university'

 

接口:

 

var List = new Interface(['add', 'remove', 'get']);
	var List2 = List.extend(['isEmpty', 'clear']);	//多接口继承
	var ArrayList = new Class({
		initialize: function() {},
		implement: [List2],	//实现接口,可多个
		//若接口中的方法没有全部实现,会报错
		add: function() {...},
		remove: function() {...},
		get: function() {...},
		isEmpty: function() {...},
		clear: function() {...}
	});
        var al = new ArrayList();
 

 

由于本人对javascript感兴趣,所有才试着编写框架,但是基础不够扎实,对其他框架的研究不够,所以必然存在很多的问题。比如该框架还没有命名空间,可能会引发命名冲突;还有一些地方没有判断;没有优化代码,总之问题还是比较多的,希望大家能够多多提意见和建议,把它完善一下。

  本人已经将代码提交到google project hosting(http://code.google.com/p/vangle/)上,另外,我还在google groups建立了vangle.js组,希望大家有空逛逛。

本文已经附上该源代码。它只是一个核心文件,还没有进行扩展。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值