javascript中类的创建和继承(3)
作者:yring 来源:经典论坛 时间:2008-05-08 12:07:00
声明子类时对子类的initialize进行重写
1.60以前
var Animal = Class.create();
Animal.prototype = {
initialize: function(name, sound) { //超类,顶一个两个参数
this.name = name;
this.sound = sound;
},
speak: function() {
alert(name + " says: " + sound + "!");
}
};
var snake = new Animal("Ringneck", "hissssssssss");
snake.speak();
// -> alerts "Ringneck says: hissssssssss!"
var Dog = Class.create();
Dog.prototype = Object.extend(new Animal(), {
initialize: function(name) { //子类,定义一个参数
this.name = name;
this.sound = "woof";
}
});
var fido = new Dog("Fido");
fido.speak();
// -> alerts "Fido says: woof!"
var Animal = Class.create();
Animal.prototype = {
initialize: function(name, sound) { //超类,顶一个两个参数
this.name = name;
this.sound = sound;
},
speak: function() {
alert(name + " says: " + sound + "!");
}
};
var snake = new Animal("Ringneck", "hissssssssss");
snake.speak();
// -> alerts "Ringneck says: hissssssssss!"
var Dog = Class.create();
Dog.prototype = Object.extend(new Animal(), {
initialize: function(name) { //子类,定义一个参数
this.name = name;
this.sound = "woof";
}
});
var fido = new Dog("Fido");
fido.speak();
// -> alerts "Fido says: woof!"
1.60以后
var Animal = Class.create({
initialize: function(name, sound) {
this.name = name;
this.sound = sound;
},
speak: function() {
alert(this.name + " says: " + this.sound + "!");
}
});
// subclassing Animal
var Snake = Class.create(Animal, {
initialize: function($super, name) { //通过$super的方式调用超类的initliaze,
$super(name, 'hissssssssss');
}
});
var ringneck = new Snake("Ringneck");
ringneck.speak();
//-> alerts "Ringneck says: hissssssssss!"
var rattlesnake = new Snake("Rattler");
rattlesnake.speak();
//-> alerts "Rattler says: hissssssssss!"
// mixing-in Enumerable
var AnimalPen = Class.create(Enumerable, {
initialize: function() {
var args = $A(arguments);
if (!args.all( function(arg) { return arg instanceof Animal }))
throw "Only animals in here!"
this.animals = args;
},
// implement _each to use Enumerable methods
_each: function(iterator) {
return this.animals._each(iterator);
}
});
var snakePen = new AnimalPen(ringneck, rattlesnake);
snakePen.invoke('speak');
//-> alerts "Ringneck says: hissssssssss!"
//-> alerts "Rattler says: hissssssssss!"
var Animal = Class.create({
initialize: function(name, sound) {
this.name = name;
this.sound = sound;
},
speak: function() {
alert(this.name + " says: " + this.sound + "!");
}
});
// subclassing Animal
var Snake = Class.create(Animal, {
initialize: function($super, name) { //通过$super的方式调用超类的initliaze,
$super(name, 'hissssssssss');
}
});
var ringneck = new Snake("Ringneck");
ringneck.speak();
//-> alerts "Ringneck says: hissssssssss!"
var rattlesnake = new Snake("Rattler");
rattlesnake.speak();
//-> alerts "Rattler says: hissssssssss!"
// mixing-in Enumerable
var AnimalPen = Class.create(Enumerable, {
initialize: function() {
var args = $A(arguments);
if (!args.all( function(arg) { return arg instanceof Animal }))
throw "Only animals in here!"
this.animals = args;
},
// implement _each to use Enumerable methods
_each: function(iterator) {
return this.animals._each(iterator);
}
});
var snakePen = new AnimalPen(ringneck, rattlesnake);
snakePen.invoke('speak');
//-> alerts "Ringneck says: hissssssssss!"
//-> alerts "Rattler says: hissssssssss!"
标签:类,prototype,继承,javascript
0
投稿
猜你喜欢
JS 中如何判断 null
2007-12-13 20:28:00
请给PNG8一个机会:对png8的误解
2009-09-21 10:45:00
SQLServer中的切割字符串SplitString函数
2011-12-01 08:14:09
设计手机端应用时的一些建议
2011-05-14 16:45:00
用doctype激活浏览器模式
2009-06-15 19:02:00
关于reflow
2007-09-23 13:30:00
IE6实现min-width
2008-06-12 12:40:00
获得当前数据库对象依赖关系的实用算法
2009-01-08 13:28:00
asp中怎么输出双引号?
2008-01-31 13:30:00
介绍27款经典的CSS框架
2011-03-04 16:24:00
Javascript函数类型判断解决方案
2009-08-27 15:32:00
解释FCKeditor样式的工作原理
2007-10-11 13:34:00
SQL server高级应用 收藏版
2012-10-07 11:04:06
Mootools 1.2教程(11)——Fx.Morph、Fx选项和Fx事件
2008-12-04 16:03:00
asp上传文件自动重命名方法
2007-08-24 09:46:00
网站改版常见问题答疑
2008-08-22 18:31:00
Dreamweaver基础技巧全面接触
2010-03-25 12:23:00
ASP中Request对象获取客户端数据的顺序
2007-09-22 10:36:00
关于淘宝商城新版的一点看法
2009-06-28 16:00:00
处理HTML代码的若干函数
2009-08-21 13:21:00