Atlas学习手记(27):JavaScript面向对象的扩展(一):命名空间Namespace
在Javascript中并没有空间、类、接口这些概念,Atlas对这些东西实现封装了,增强了JavaScript面向对象方面的能力,本文看一下如何使用命名空间。
主要内容
1.概述
2.完整示例
一.概述
在Javascript中并没有空间、类、接口这些概念,Atlas对这些东西进行了封装,增强了JavaScript面向对象方面的能力,本文看一下如何使用命名空间。在使用命名空间时有两个方法是需要我们注意的。
registerNamespace:注册一个命名空间
registerClass:注册一个类到某个命名空间中
二.完整示例
1.新建一个Atlas Web Site后,添加一个Namespace.js的文件,在这里我们注册一个Demo的命名空间,并创建Person类,把它注册到Demo命名空间中,如下所示:
// JScript File
Type.registerNamespace("Demo");
Demo.Person = function(firstName, lastName, emailAddress) {
var _firstName = firstName;
var _lastName = lastName;
var _emailAddress = emailAddress;
this.getFirstName = function() {
return _firstName;
}
this.getLastName = function() {
return _lastName;
}
this.getName = function() {
return _firstName + ' ' + _lastName;
}
this.dispose = function() {
alert('bye ' + this.getName());
}
}
Demo.Person.registerClass('Demo.Person', null, Sys.IDisposable);
Type.registerNamespace("Demo");
Demo.Person = function(firstName, lastName, emailAddress) {
var _firstName = firstName;
var _lastName = lastName;
var _emailAddress = emailAddress;
this.getFirstName = function() {
return _firstName;
}
this.getLastName = function() {
return _lastName;
}
this.getName = function() {
return _firstName + ' ' + _lastName;
}
this.dispose = function() {
alert('bye ' + this.getName());
}
}
Demo.Person.registerClass('Demo.Person', null, Sys.IDisposable);
2.在ASPX页面中添加ScriptManager,这个总是不能少的:
<atlas:ScriptManager runat="server" ID="scriptManager" />
3.引入我们刚才创建的JS文件:
<script type="text/javascript" src="Namespace.js"></script>
4.现在就可以在前端脚本中调用了:
<script type="text/javascript" language="JavaScript">
function OnButton1Click()
{
var testPerson = new Demo.Person('John', 'Smith', 'john.smith@example.com');
alert(testPerson.getFirstName() + " " + testPerson.getLastName() );
return false;
}
</script>
function OnButton1Click()
{
var testPerson = new Demo.Person('John', 'Smith', 'john.smith@example.com');
alert(testPerson.getFirstName() + " " + testPerson.getLastName() );
return false;
}
</script>
5.添加一个Button,在它的单击事件中来调用:
<div>
This example and puts the Person class in the "Demo" namespace.
<br />
<br />
<input id="Button1" value="Create Demo.Person" type="button" onclick="return OnButton1Click()" />
</div>
This example and puts the Person class in the "Demo" namespace.
<br />
<br />
<input id="Button1" value="Create Demo.Person" type="button" onclick="return OnButton1Click()" />
</div>
看看上面编写的代码,是不是很有面向对象的感觉呢?编译运行:
单击按钮后:
完整示例下载