接上一节的例子,我们引入类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