(学习Asp.net Ajax笔记一)使用 Microsoft AJAX Library 创建自定义客户端脚本之一

          什么时候使用类型系统

当您要执行下列操作时,可以使用 Microsoft AJAX Library 的功能:

  • 向 JavaScript 代码中添加面向对象的功能,以提高代码的重用性、灵活性和可维护性。

  • 使用反射在运行时检查客户端脚本的结构和组件。

  • 使用枚举提供不同于整数的另一种易读的表示形式。

  • 使用 JavaScript 基类型的扩展缩短常规脚本任务的开发时间。

  • 使用调试扩展和跟踪功能,实现比传统 JavaScript 调试技术更快、信息更丰富的调试。

        使用类型系统

Microsoft AJAX Library 增加了一个类型系统以及一系列对 JavaScript 对象的扩展,可提供与 .NET Framework 功能类似的面向对象的常用功能。利用这些功能,可按一种结构化方式编写支持 AJAX 的 ASP.NET 应用程序,这不仅能提高可维护性,还简化了添加功能以及对功能分层的操作。Microsoft AJAX Library 扩展为 JavaScript 添加了下列功能:

  • 命名空间

  • 继承

  • 接口

  • 枚举

  • 反射

该库还提供了针对字符串和数组的 Helper 函数。

             下面通过一个简单的例子来看下类和继承

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="1.aspx.cs" Inherits="_1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <script type="text/javascript">
            Type.registerNamespace("Demo");
            Demo.Person = function (firstName, lastName) {
                this._firstName = firstName;
                this._lastName = lastName;
            }
            Demo.Person.prototype =
            {
                get_firstName: function ()
                {
                    return this._firstName;
                },
                get_lastName: function ()
                {
                    return this._lastName;
                },
                toString: function ()
                {
                    return this.get_firstName() + " " + this.get_lastName();
                }
            }
            //这里写错了
            //Type.registerClass("Demo.Person");
            Demo.Person.registerClass("Demo.Person");
            //继承
            Demo.Employee = function (firstName, lastName, title)
            {
                Demo.Employee.initializeBase(this, [firstName, lastName]);
                this._title = title;
            }
            Demo.Employee.prototype =
                {
                    get_title:function()
                    {
                        return this._title;
                    },
                    toString: function()
                    {
                        //因为没有加return 所以是undefined
                        return Demo.Employee.callBaseMethod(this, "toString") + "title:" + this.get_title();
                    }
                }
            //我的这句话写错了。
            //Type.registerClass("Demo.Employee", Demo.Person);
            Demo.Employee.registerClass("Demo.Employee", Demo.Person);
        </script>
    </form>
    <input type="button" value="测试" οnclick="onButtonClick();" />
    <input type="button" value="测试继承" οnclick="onButtonClick2();" />
    <script type="text/javascript">
        function onButtonClick()
        {
            var test = new Demo.Person("liu", "shuai");
            //不要忘记加()哦
            alert(test.get_firstName() + " " + test.get_lastName());
            return false;
        }
        function onButtonClick2()
        {
            var test = new Demo.Employee("yj", "jm", "CEO");
            alert(test.toString());
            return false;
        }
    </script>
</body>
</html>


        实现的效果如下:

       单击测试按钮:

                          单击 测试继承 按钮:

          MSDN帮助链接:http://msdn.microsoft.com/zh-cn/library/bb386453(v=vs.90).aspx

 

发布了138 篇原创文章 · 获赞 11 · 访问量 40万+

猜你喜欢

转载自blog.csdn.net/yjjm1990/article/details/8811420