zoukankan      html  css  js  c++  java
  • 一个Javascript类URI,顺便当作学习js类的笔记了。

    以前专门学习过js的类,不过最近研究.net比较多,都给忘记了。就上网找了几篇文章看看。先说一下参考文章: 

    1、Javascript中的类实现 :这个用接近C#的思维来讲解,我觉得最适合我。

    http://www.cnitblog.com/CoffeeCat/archive/2008/02/25/40138.html 

    2、泣红亭,了解js类,这篇文章很多地方转载,就是没找到最原始的无忧色脚本的链接。下面随便找了一个。

    http://blog.csdn.net/boat1980/archive/2008/07/23/2696244.aspx

    3、javascript定义类和实例化类
    新闻来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0905/60415.html

    简单评论一下:

    首先,js本身是不支持类的。但是通过开发人员扩充Object对象和Function对象,可以模拟出类和一些面向对象的特性。不管到达模拟出来多少,有两点不可以改变,第一,确实很大程度上增加了js的能力,第二,只是模拟类,而不是真正的支持类。所以,对于类的应用,每个人都不同的认识、不同的看法。甚至连术语都不一样。

    第二,我以C#来衡量,上面这些文章里面所说的“属性”,我觉得更应该称为“字段”或者“变量”。因为在我的实验中,给属性赋值的过程中,不可以加上处理的代码,只能当作类的字段来用。

    Code
    <script type="text/javascript">

    /*
    原来要写成函数的,感觉很别扭,就改成类来写了。
    下面的程序也就没写完。
    var url = "?";
    function AddQuery(url,key,value){
        if(url == '?')
        {
            url += "     
    }
    */

    /******************************************************************
    * URI 管理类。
    * 一个URI分成两部分:URL和QueryString,这里主要是对后者进行管理。
    * 默认以?打头,但是可以修改Url变量组成完成的URI
    * 主要的方法是getURI(),g()是前一个方法的简洁写法,另外重写了toString()(继承自Object)
    *****************************************************************
    */
    function URI(){
        
    var _this = this;        //防止类成员的this和类本身的this混淆,所以在类成员的代码段里有_this来引用。
        var str = '?';            //var打头,可以当作private用
        this.Url = '';            //this打头,可以当作public用
        this.Add = function(str1,str2)
        {
            
    if(str == '?')
            {
                str 
    += str1 + '=' + str2;
            }
            
    else
            {
                str 
    += '&' + str1 + '=' + str2;
            }
        }
        
    this.toString = function()
        {
            
    return _this.getURI();
        }
        
    this.getURI = function(){
            
    return _this.Url + str;
        }
        
    //------------  下面这种不行!
        //this.g = this.getURI();
        this.g = function(){ //getURI()简写作g()
            return _this.getURI();
        }
    }

    var u = new URI();
    u.Add(
    "Bigclass",222);
    alert(u.toString());
    u.Add(
    "k","test");
    alert(u.toString());

    var uri = new URI();
    uri.Path 
    = "go.asp?";
    uri.Add(
    "abc",123);
    alert(uri.toString());

    alert(
    "开始多种方法形式测试!");
    alert(uri.g());
    alert(uri.getURI());
    </script>
  • 相关阅读:
    NOIP 2017逛公园(记忆化搜索)
    NOIP 2012疫情控制 (二分+倍增+贪心)
    NOIP 2005过河(DP+路径压缩)
    P1198 [JSOI2008]最大数
    [Noip2016]蚯蚓
    [六省联考2017]期末考试
    六省联考:组合数问题
    蒜头君的兔子
    bzoj1015 [JSOI2008]星球大战starwar
    luogu P3370 【模板】字符串哈希
  • 原文地址:https://www.cnblogs.com/xpnew/p/1372897.html
Copyright © 2011-2022 走看看