ajax.net 对javascript的OO强化
World.IRunnable.js
1/// <reference name="MicrosoftAjax.js"/>
2//定义动物跑的接口
3World.IRunnable = function() { }
4World.IRunnable.prototype = {
5 run: function() { }
6}
7World.IRunnable.registerInterface("World.IRunnable");
1/// <reference name="MicrosoftAjax.js"/>
2//定义动物跑的接口
3World.IRunnable = function() { }
4World.IRunnable.prototype = {
5 run: function() { }
6}
7World.IRunnable.registerInterface("World.IRunnable");
World.Animal.js
1/// <reference name="MicrosoftAjax.js"/>
2
3//ajax.net 加强javascript的面向对象支持
4
5//声明命名空间
6Type.registerNamespace("World");
7//定义类,等于创建构造
8World.Animal = function(name) {
9 this._animalName = name;
10};
11//定义类方法
12World.Animal.prototype = {
13 //获取name
14 get_Name:function() {
15 return this._animalName;
16 },
17 //设置name
18 set_Name:function(name) {
19 this._animalName = name;
20 },
21 //定义方法eat
22 eat:function() {
23 return 'Animal eats.';
24 }
25}
26//注册类
27World.Animal.registerClass("World.Animal");
28
1/// <reference name="MicrosoftAjax.js"/>
2
3//ajax.net 加强javascript的面向对象支持
4
5//声明命名空间
6Type.registerNamespace("World");
7//定义类,等于创建构造
8World.Animal = function(name) {
9 this._animalName = name;
10};
11//定义类方法
12World.Animal.prototype = {
13 //获取name
14 get_Name:function() {
15 return this._animalName;
16 },
17 //设置name
18 set_Name:function(name) {
19 this._animalName = name;
20 },
21 //定义方法eat
22 eat:function() {
23 return 'Animal eats.';
24 }
25}
26//注册类
27World.Animal.registerClass("World.Animal");
28
World.Enum.Position.js
1/// <reference name="MicrosoftAjax.js"/>
2Type.registerNamespace('World.Enum');
3World.Enum.Position = function() { };
4World.Enum.Position.prototype = {
5 Center:0,
6 Top:1,
7 Bottom:2,
8 Left:3,
9 Right:4
10}
11World.Enum.Position.registerEnum('World.Enum.Position');
1/// <reference name="MicrosoftAjax.js"/>
2Type.registerNamespace('World.Enum');
3World.Enum.Position = function() { };
4World.Enum.Position.prototype = {
5 Center:0,
6 Top:1,
7 Bottom:2,
8 Left:3,
9 Right:4
10}
11World.Enum.Position.registerEnum('World.Enum.Position');
AJAXOOPJS.aspx
1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head runat="server">
5 <title></title>
6 <script type="text/javascript">
7 function pageLoad() {
8 }
9 </script>
10</head>
11<body>
12 <form id="form1" runat="server">
13 <div>
14 <asp:ScriptManager ID="ScriptManager1" runat="server" >
15 <Scripts>
16 <asp:ScriptReference Path="~/World.Animal.js" />
17 <asp:ScriptReference Path="~/World.IRunnable.js" />
18 <asp:ScriptReference Path="~/World.Enum.Position.js" />
19 </Scripts>
20 </asp:ScriptManager>
21 <div id="div1"></div>
22 <script language="javascript" type="text/javascript">
23 //代码测试建立的类
24 var _animal = new World.Animal('some animal');
25 div1.innerHTML += _animal.get_Name() + '<br/>';
26 div1.innerHTML += _animal.eat() + '<br/>';
27 //实现继承,Dog继承Animal类
28 World.Dog = function(animalName) {
29 World.Dog.initializeBase(this, [animalName]); //用来调用父类的构造函数,并将构造父类所必需的参数name传递给父类
30 };
31 World.Dog.registerClass('World.Dog', World.Animal); //第二个参数实现继承关系
32 //重写父类方法
33 World.Dog.prototype = {
34 eat: function() {
35 return 'Dog eats.';
36 }
37 };
38 //测试一下写的Dog类
39 var _dog = new World.Dog('some dog');
40 div1.innerHTML += _dog.get_Name()+'<br/>';
41 div1.innerHTML += _dog.eat() + '<br/>';
42
43 //定义马类,并让其继承Run,跑的接口
44 World.Horse = function(animalName) {
45 World.Horse.initializeBase(this, [animalName]); //用来调用父类的构造函数,并将构造父类所必需的参数name传递给父类
46 };
47 //实现重写类方法eat()及接口方法run
48 World.Horse.prototype = {
49 eat: function() {
50 return 'hourse eats.';
51 },
52 run: function() {
53 return 'hourse run.';
54 }
55 };
56 World.Horse.registerClass('World.Horse', World.Animal, World.IRunnable); //World.Horse继承了World.Animal,实现了IRunnable接口
57 //多接口实现方式World.Horse.registerClass('World.Horse', World.Animal, World.IRunnable1,World.IRunnable2,World.IRunnable3,World.IRunnable4.);
58 //测试马类,看他是否会吃会跑
59 var _horse = new World.Horse('some hourse');
60 div1.innerHTML += _horse.get_Name() + '<br/>';
61 div1.innerHTML += _horse.eat() + '<br/>';
62 div1.innerHTML += _horse.run() + '<br/>';
63 //看看枚举类型的Left值
64 div1.innerHTML += World.Enum.Position.Left + "<br/>";
65 //反射支持
66 //某类型是否实现接口
67 var _isImplementer = World.Horse.implementsInterface(World.IRunnable); //Horse类型是否实现了IRunnable接口
68 div1.innerHTML += _isImplementer + '<br/>';//true
69 _isImplementer = World.Dog.implementsInterface(World.IRunnable); //Dog类型是否实现了IRunnable接口
70 div1.innerHTML += _isImplementer + '<br/>';//false
71 //验证是否继承自某个类型
72 var _isDerived = World.Dog.inheritsFrom(World.Animal);
73 div1.innerHTML += _isDerived + '<br/>';//true
74 _isDerived = World.Dog.inheritsFrom(World.Horse);
75 div1.innerHTML += _isDerived + '<br/>';//false
76 //判断某个类型是否为类
77 var _isClass = Type.isClass(World.Dog);
78 div1.innerHTML += _isClass + '<br/>';//true
79 _isClass = Type.isClass(World.IRunnable);
80 div1.innerHTML += _isClass + '<br/>';//false
81 _isClass = Type.isClass(World.Enum.Position);
82 div1.innerHTML += _isClass + '<br/>';//false
83 var _newDog = new World.Dog('newDog');
84 _isClass = Type.isClass(_newDog);
85 div1.innerHTML += _isClass + '<br/>';//false
86 //判断是否为接口
87 div1.innerHTML += Type.isInterface(World.IRunnable)+'<br/>';//true
88 div1.innerHTML += Type.isInterface(World.Enum.Position) + '<br/>'; //false
89 //判断是否为命名空间
90 div1.innerHTML += Type.isNamespace(World) + '<br/>'; //true
91 div1.innerHTML += Type.isNamespace(World.Horse) + '<br/>'; //false
92 //判断某个对象是否实现了接口
93 div1.innerHTML += World.IRunnable.isImplementedBy(_newDog)+'<br/>';//false
94 div1.innerHTML += World.IRunnable.isImplementedBy(_horse) + '<br/>'; //true
95 //判断某对象是否为指定类或子类的实例
96 div1.innerHTML += World.Dog.isInstanceOfType(_newDog) + '<br/>';//true
97 div1.innerHTML += World.Animal.isInstanceOfType(_dog) + '<br/>';//false
98 div1.innerHTML += World.Dog.isInstanceOfType(_horse) + '<br/>';//false
99 </script>
100 </div>
101 </form>
102</body>
103</html>
104
1<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs" Inherits="Default4" %>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3<html xmlns="http://www.w3.org/1999/xhtml">
4<head runat="server">
5 <title></title>
6 <script type="text/javascript">
7 function pageLoad() {
8 }
9 </script>
10</head>
11<body>
12 <form id="form1" runat="server">
13 <div>
14 <asp:ScriptManager ID="ScriptManager1" runat="server" >
15 <Scripts>
16 <asp:ScriptReference Path="~/World.Animal.js" />
17 <asp:ScriptReference Path="~/World.IRunnable.js" />
18 <asp:ScriptReference Path="~/World.Enum.Position.js" />
19 </Scripts>
20 </asp:ScriptManager>
21 <div id="div1"></div>
22 <script language="javascript" type="text/javascript">
23 //代码测试建立的类
24 var _animal = new World.Animal('some animal');
25 div1.innerHTML += _animal.get_Name() + '<br/>';
26 div1.innerHTML += _animal.eat() + '<br/>';
27 //实现继承,Dog继承Animal类
28 World.Dog = function(animalName) {
29 World.Dog.initializeBase(this, [animalName]); //用来调用父类的构造函数,并将构造父类所必需的参数name传递给父类
30 };
31 World.Dog.registerClass('World.Dog', World.Animal); //第二个参数实现继承关系
32 //重写父类方法
33 World.Dog.prototype = {
34 eat: function() {
35 return 'Dog eats.';
36 }
37 };
38 //测试一下写的Dog类
39 var _dog = new World.Dog('some dog');
40 div1.innerHTML += _dog.get_Name()+'<br/>';
41 div1.innerHTML += _dog.eat() + '<br/>';
42
43 //定义马类,并让其继承Run,跑的接口
44 World.Horse = function(animalName) {
45 World.Horse.initializeBase(this, [animalName]); //用来调用父类的构造函数,并将构造父类所必需的参数name传递给父类
46 };
47 //实现重写类方法eat()及接口方法run
48 World.Horse.prototype = {
49 eat: function() {
50 return 'hourse eats.';
51 },
52 run: function() {
53 return 'hourse run.';
54 }
55 };
56 World.Horse.registerClass('World.Horse', World.Animal, World.IRunnable); //World.Horse继承了World.Animal,实现了IRunnable接口
57 //多接口实现方式World.Horse.registerClass('World.Horse', World.Animal, World.IRunnable1,World.IRunnable2,World.IRunnable3,World.IRunnable4.);
58 //测试马类,看他是否会吃会跑
59 var _horse = new World.Horse('some hourse');
60 div1.innerHTML += _horse.get_Name() + '<br/>';
61 div1.innerHTML += _horse.eat() + '<br/>';
62 div1.innerHTML += _horse.run() + '<br/>';
63 //看看枚举类型的Left值
64 div1.innerHTML += World.Enum.Position.Left + "<br/>";
65 //反射支持
66 //某类型是否实现接口
67 var _isImplementer = World.Horse.implementsInterface(World.IRunnable); //Horse类型是否实现了IRunnable接口
68 div1.innerHTML += _isImplementer + '<br/>';//true
69 _isImplementer = World.Dog.implementsInterface(World.IRunnable); //Dog类型是否实现了IRunnable接口
70 div1.innerHTML += _isImplementer + '<br/>';//false
71 //验证是否继承自某个类型
72 var _isDerived = World.Dog.inheritsFrom(World.Animal);
73 div1.innerHTML += _isDerived + '<br/>';//true
74 _isDerived = World.Dog.inheritsFrom(World.Horse);
75 div1.innerHTML += _isDerived + '<br/>';//false
76 //判断某个类型是否为类
77 var _isClass = Type.isClass(World.Dog);
78 div1.innerHTML += _isClass + '<br/>';//true
79 _isClass = Type.isClass(World.IRunnable);
80 div1.innerHTML += _isClass + '<br/>';//false
81 _isClass = Type.isClass(World.Enum.Position);
82 div1.innerHTML += _isClass + '<br/>';//false
83 var _newDog = new World.Dog('newDog');
84 _isClass = Type.isClass(_newDog);
85 div1.innerHTML += _isClass + '<br/>';//false
86 //判断是否为接口
87 div1.innerHTML += Type.isInterface(World.IRunnable)+'<br/>';//true
88 div1.innerHTML += Type.isInterface(World.Enum.Position) + '<br/>'; //false
89 //判断是否为命名空间
90 div1.innerHTML += Type.isNamespace(World) + '<br/>'; //true
91 div1.innerHTML += Type.isNamespace(World.Horse) + '<br/>'; //false
92 //判断某个对象是否实现了接口
93 div1.innerHTML += World.IRunnable.isImplementedBy(_newDog)+'<br/>';//false
94 div1.innerHTML += World.IRunnable.isImplementedBy(_horse) + '<br/>'; //true
95 //判断某对象是否为指定类或子类的实例
96 div1.innerHTML += World.Dog.isInstanceOfType(_newDog) + '<br/>';//true
97 div1.innerHTML += World.Animal.isInstanceOfType(_dog) + '<br/>';//false
98 div1.innerHTML += World.Dog.isInstanceOfType(_horse) + '<br/>';//false
99 </script>
100 </div>
101 </form>
102</body>
103</html>
104