网络编程
位置:首页>> 网络编程>> JavaScript>> javascript中类的创建和继承(3)

javascript中类的创建和继承(3)

作者:yring 来源:经典论坛 发布时间:2008-05-08 12:07:00 

标签:类,prototype,继承,javascript

声明子类时对子类的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!" 
0
投稿

猜你喜欢

  • 无聊,写了一个图片后加载的东东,感谢asfman帮忙<!DOCTYPE html PUBLIC "-//W3C//DTD X
  • 今天再为大家提供一种方法:不需要安装Excel也可以导入到我们的SQL Server数据库。首先用SQL Server自身的数据转换功能把E
  • 摘要: 阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载组
  • 最近笔者学会了用FrontPage XP做网页,心理特高兴,非常想把我在制作主页过程中的一些经验和大家交流交流、切磋切磋,我们一起来看看吧。
  • 表的故障检测和修正的一般过程如下:◆ 检查出错的表。如果该表检查通过,则完成任务,否则必须修复出错的数据库表。◆ 在开始修复之前对表文件进行
  • 在网站开发的时候经常要用chr(),但本人比较懒没时间记那么多。于是到用到的时候就查,这样麻烦。现在将它写出来方便以后用到查,也方便大家!c
  • 常用Mysql查询语句记录一、授权1.授权本地用户对所有数据库具有所有权限> grant all privileges on
  • Sun周三宣布,准备以10亿美元收购MySQL开源数据库公司。据悉,Sun将支付大约8亿美元现金给MySQL,以获得其私募股票,另外,Sun
  • 聚集索引,数据实际上是按顺序存储的,数据页就在索引页上。就好像参考手册将所有主题按顺序编排一样。一旦找到了所要搜索的数据,就完成了这次搜索,
  • 有。试试下面这个程序:saveip.asp<%Server.Scripttimeout = 1000On 
  • ajax开发中, 常遇到下面的几种情况: 1 服务端需要返回一段普通文本给客户端 2 服务端需要返回一段HTML代码给客户端 3 服务端需要
  • 首先你要明白24bit的bmp图片的基本信息:1像素占3个字节,头部占54个字节。好了,现在开始做验证码了,这里以4位验证码(大小为20(高
  • 匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内
  • 比如要访问b站在a站设置一个cookies,则可以这样做: 1.在b.com下建立一个文件cookies.htm 内容为: 代码如下:内容摘
  • 一个网站的导航就相当于是一条路的路标,不同的是,网站的不同栏目页的入口远远比马路要来得复杂,所以一个清晰的导航设计对于一个网站的意义远远大于
  • 毫无疑问,JavaScript 是一种非常灵活的脚本语言,有时候它像一只难以驯服的野马——你受益于它的灵活性的同时,也要时刻提防它变得失去控
  • 当我想要完美的使用:nth-child或者:nth-of-type的时候有点儿头晕。你越理解它们,就能写出越好的CSS规则!在这些简单的”秘
  • 当使用MySQL做站点的时候,肯定会有不知道的错误发生,怎么记录呢?以下是具体解决方法:class.method //建立错误日志 func
  • 先看看这三段话:[1、企业文化对形成企业内部凝聚力和外部竞争力所起到的积极作用,越来越受到人们的重视。企业竞争,实质是企业文化的竞争。面临全
  • 如何显示一个等待或欢迎信息? <% Response.Buffer = True %
手机版 网络编程 asp之家 www.aspxhome.com