以前专门学习过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>
<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>