文章来源:http://www.javaeye.com/topic/131533
Tags: prototypeprototype | oopoop | 继承继承
2007-12-1 15:09:55 | 编辑
Prototype 1.6的类继承
原来的Prototype支持Class,大概就是下面这样
代码
- var PeriodicalExecuter = Class.create();
- PeriodicalExecuter.prototype = {
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
- this.registerCallback();
- },
- .......
- }
首先,create可以传参数了Class.create(parent,methods),parent可以是匿名对象或者类,methods就是子类方法,示例:
代码
- var test=Class.create({a:123,b:456,c:[1,2,3],initialize:function(){}})
- var result=new test;
就可以取代原来的
代码
- var test=Class.create();
- test.prototype={
- a:123,
- b:456,
- c:[1,2,3],
- initialize:function(){}
- }
代码
- var a=Class.create({initialize:function(){},test1:123,test2:456,check:function(){alert(this.test1)}})
- var b=Class.create(a,{check:function(){alert(this.test2)}})
- c=new b;
- c.check()
代码
- var a=Class.create({initialize:function(){},test1:123,test2:456,check:function(){alert(this.test1)}})
- var b=Class.create(a,{check:function($super){alert(this.test2);$super()}})
另外刚刚看了下rc1的介绍,加入了mixin方法和类的addMethods方法,比如现在可以
代码
- var a=Class.create({a;1,b:2},{c:3,d:4},......)
比如
代码
- a=Class.create({a:1,b:2,initialize:function(){}})
- b=new a
- a.addMethods({
- test:function(){alert(123)},
- test2:function(){alert(456)}
- })
- b.test()
- b.test2()
代码
- a=Class.create({a:1,b:2,initialize:function(){},test:function(){alert(this.a)}})
- b=Class.create(a,{})
- b.addMethods({test:function($super){alert(this.b);$super()}})
参考资料:
http://prototypejs.org/learn/class-inheritance