您现在的位置: 冰舟工作室 >> WEB开发 >> JavaScript >> 文章正文

Atlas学习笔记11:扩展javascript中的继承

作者:佚名 文章来源:不详 点击数: 更新时间:2008-1-22 16:01:39
接上一节的例子,我们引入类Teacher,他继承自Person,下面是具体的代码:

Type.registerNamespace(
"Demo");

Demo.Person 
= function(name) {
    
this._name = name;
}

Demo.Person.prototype 
= {
    getName: 
function() {
        
return this._name;
    },
    toString:
function(){
        
return "name:"+ this._name;
    }
}

Demo.Person.registerClass(
'Demo.Person');


Demo.Teacher 
= function(name,course){
    Demo.Teacher.initializeBase(
this,[name]);
    
this._course = course;
}

Demo.Teacher.prototype 
={
    getCourse:
function(){
        
return this._course;
    },
    toString:
function(){
        
return Demo.Teacher.callBaseMethod(this,'toString')+" course:"+this.getCourse();
    }
}

Demo.Teacher.registerClass(
'Demo.Teacher',Demo.Person);

这里有几个重要的方法:
initializeBase,callBaseMethod,registerClass。
initializeBase:用于在指定的实例中初始化基类和他的成员。他包含两个参数,第一个参数是我们指定的实例,通常为this,第二个参数是基类构造函数的参数,可以为null。
callBaseMethod:用指定的参数调用基类的方法,他包含三个参数,第一个是我们指定的实例,通常为this。第二个是我们想调用的基类的方法,第三个则是该方法的参数,可以为null。
registerClass:就是注册一个类。他包含三个参数,第一个是类的名字,第二个是基类的名字,第三个是接口的名字。本例中两处使用了他:
Demo.Person.registerClass('Demo.Person')和Demo.Teacher.registerClass('Demo.Teacher',Demo.Person);
第一个是注册类Demo.Person,第二个则是注册他的子类Demo.Teacher。
类都定义好了,下面可以直接调用了:
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
    
<input type="button" value="Introduce" onclick="Introduce()" />
    
<input type="button" value="TeacherIntroduce" onclick="TeacherIndroduce()" />
    
<script type="text/javascript" src="js/demo_class.js"></script>
    
<script type="text/javascript">
    
function Introduce()
    {
        
var person = new Demo.Person('liuwu');
        alert(
'my name is '+person.getName());
        alert(person.toString());
        
return false;
    }
    
function TeacherIndroduce()
    {
        
var teacher = new Demo.Teacher('liuwu','computer');
        alert(
'my name is '+teacher.getName()+" and i teach "+ teacher.getCourse());
        alert(teacher.toString());
        
return false;
    }
    
</script>


 

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1967178


  • 上一篇文章:

  • 下一篇文章:
  • 相关内容
    · JS 控制select表单
    · 经典源码JavaScript之计数器(倒数
    · 高手教程:jsp中根据传入值,用j
    · 使用DOS和javascript在html网页中
    · javascript函数之删除空格
    · javascript巧妙实现WORD里的斜线
    · 经典收藏JavaScript中常用的107条
    · JavaScript圣经之优化篇
    · JavaScript圣经之优化总结
    · IDv+Js+css切换效果
    · 图片幻灯切换代码(纯JS代码带演
    · 常用的107条Javascript
    · JavaScript 删除空格(trim)
    · Javascript 计算闰年
    · JavaScript静态页面值传递之Cook
    · html----javascript----只打开一
    · 妙用JavaScript实现网页的任意缩
    · 通过Javascript把页面导入到Exce
    · javascript
    · 常用的JavaScript语句集(转载)
    · JavaScript语言
    · javascript 实现的锁屏、解屏功能
    · 获取web页面大小、分辨率等信息(
    · php+javascript 静态化简单实例
    · javascript事件的绑定
    · javascript 详解各控件的操作
    · 最新Javascript按比例压缩图片,
    · javascript中的indexOf(),lastin
    · javascript截取字符串方法
    · ajax学习笔记一:面向对象的javas
    · Atlas学习笔记11:扩展javascrip
    · Javascript“画图”Asp.net版
    · dojo (a open source JavaScript
    · 用Acrobat Javascript 开发。
    · JavaScript技术要点
    · 免费的javascript写的控件组件
    · document 文挡对象
    · 用javascript检查文件大小
    · 小议Javascript代码优化方法及原
    · javascript控制lotus的rtf域
    · javascript学习
    · 在线压缩javascript
    · 随心所欲的Web页面打印技术(Asp.
    · javascript 写的tab页代码
    · javascript中replace()函数用法小
    · test

    CopyRights 2007-2008 冰舟工作室 All Rights Reserved
    www.bz918.com