一个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>
原文地址:https://www.cnblogs.com/xpnew/p/1372897.html