你的位置:首页 > 软件开发 > ajax > Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance

Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance

发布时间:2008-10-23 21:48:00
在Javascript中并没有空间、类、接口这些概念,Atlas对这些东西实现封装了,增强了JavaScript面向对象方面的能力,本文看一下如何使用继承。 主要内容1.概述2.完整示例 一.概述在Javascript中并没有空间、类、接口这些概念,Atlas对这些东西实现封装了,增强了JavaScript面向对象方面的能力,本文看一下如何使用继承。简单定义一个可被继承的基类,在注册类时指

Javascript中并没有空间、类、接口这些概念,Atlas对这些东西实现封装了,增强了JavaScript面向对象方面的能力,本文看一下如何使用继承。

 

主要内容

1.概述

2.完整示例

 

一.概述

Javascript中并没有空间、类、接口这些概念,Atlas对这些东西实现封装了,增强了JavaScript面向对象方面的能力,本文看一下如何使用继承。简单定义一个可被继承的基类,在注册类时指定类名就可以了:

Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceBaseClass = function()Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    // ……Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance}Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceBaseClass.registerClass("BaseClass");

定义一个继承类,先要调用父类的构造器,除了传递本身之外还可以传递一些参数,注册类时需要指定继承自哪个类:

Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDerivedClass = function()Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance       DerivedClass.intializeBase(this,arguments); Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance}Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDerivedClass.registerClass("DerivedClass","BaseClass");

二.完整示例

看一下Atlas官方网站提供的例子,新建Atlas Web Site,添加一个Inheritance.js的JS文件,定义Person 和Employee两个类 ,并且让Employee继承于Person,Employee覆写父类中的toString方法:

Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance// JScript FileAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceType.registerNamespace("Demo");Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDemo.Person = function(firstName, lastName, emailAddress) Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    var _firstName = firstName;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    var _lastName = lastName;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    var _emailAddress = emailAddress;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.getFirstName = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return _firstName;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.getLastName = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return _lastName;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.getEmailAddress = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return _emailAddress;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.setEmailAddress = function(emailAddress) Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        _emailAddress = emailAddress;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.getName = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return _firstName + ' ' + _lastName;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.dispose = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert('bye ' + this.getName());Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    }Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDemo.Person.registerClass('Demo.Person', null, Sys.IDisposable);Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDemo.Person.prototype.sendMail = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    var emailAddress = this.getEmailAddress();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    if (emailAddress.indexOf('@') < 0) Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        emailAddress = emailAddress + '@example.com';Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    }Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    alert('Sending mail to ' + emailAddress + ' Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance');Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance}Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDemo.Person.prototype.toString = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    return this.getName() + ' (' + this.getEmailAddress() + ')';Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance}Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDemo.Employee = function(firstName, lastName, emailAddress, team, title) Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    Demo.Employee.initializeBase(this, [firstName, lastName, emailAddress]);Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    var _team = team;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    var _title = title;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.getTeam = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return _team;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.setTeam = function(team) Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        _team = team;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.getTitle = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return _title;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    this.setTitle = function(title) Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        _title = title;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance}Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDemo.Employee.registerClass('Demo.Employee', Demo.Person);Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceDemo.Employee.prototype.toString = function() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    return Demo.Employee.callBaseMethod(this, 'toString') + '\r\n' + this.getTitle() + '\r\n' + this.getTeam();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance}

ASPX页面中引入该JS文件:

Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance<script type="text/javascript" src='/images/loading.gif' data-original="Inheritance.js"></script>

编写一些客户端脚本来进行测试,代码如下所示,每个测试大家可以运行后看一下:

Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance<script type="text/javascript" language="JavaScript">Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function GetTestPerson() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function GetTestEmployee() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    }Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function OnTestNewClick() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        var aPerson = GetTestPerson();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert(aPerson.getFirstName());Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert(aPerson);Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert(Object.getType(aPerson).getName());Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        var testPerson = GetTestPerson();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert(testPerson.getFirstName());Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert(testPerson);Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return false;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function OnTestDisposeClick() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        var aPerson = GetTestEmployee();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert(aPerson.getFirstName());Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        aPerson.dispose();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function OnTestPrivatePropertyClick() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        var aPerson = GetTestEmployee();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert('aPerson._firstName = ' + aPerson._firstName);Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert('aPersona.getFirstName() = ' + aPerson.getFirstName());Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return false;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function OnTestInstanceMethodClick() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        var aPerson = GetTestEmployee();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        aPerson.sendMail('Hello', 'This is a test mail.');Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return false;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function OnTestOverrideMethodClick() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        var testPerson = GetTestEmployee();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        alert(testPerson);Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return false;Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    function OnTestInstanceOfClick() Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        var aPerson = GetTestEmployee();Atlas学习手记(28):JavaScript面向对象的扩展(二):继承InheritanceAtlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        if (Demo.Employee.isInstanceOfType(aPerson)) Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance{Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance            alert(aPerson.getName() + ' is an Employee instance.\r\nTitle property: ' + aPerson.getTitle());Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        }Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance        return false;
Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance    }
Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance</script>

继承就简单的介绍这么多。 

完整示例下载:http://files.cnblogs.com/Terrylee/AtlasInheritanceDemo.rar

原标题:Atlas学习手记(28):JavaScript面向对象的扩展(二):继承Inheritance

关键词:JavaScript

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录