Function本身也是个Object,所以,如果说js里有"实例属性"和"实例方法"的话,那它们是在构造函数理定义如下:
[code]
function className(){
this.a = ""; //实例属性
this.b =" ";
this.c= funcC; //实例方法
}
function funcC(){ //方法
......
}
[/code]
或用:
[code]
function className(){
}
className.prototype.a="";
className.prototype.b=" ";
className.prototype.c=function(){..............}
}
[/code]
注:上两者也有区别.
利用如上的构造函数可以new新对象.但不能zhiji通过类名引用.
然而对于javascript来讲构造函数本身也是一个对象,也可以有自己的属性和方法.
可以说这就类似是"类属性"和"类方法".
function ChinaRen(){
..................
}
ChinaRen.Country ='中国'; //类属性
ChinaRen.getCountry =function(){return ChinaRen.Country}; //类方法
ChinaRen.setCountry =function(sValue){return ChinaRen.Country=sValue};
这种属性和方法可通过"类名.属性"和"类名.方法"引用,但不能通过new传给实例对象.
所以,如果既想可new又可用"类名.方法",如下:
<script type="text/javascript">
function ChinaRen(){
this.Country = "china";
this.getCountry = ChinaRen.getCountry;
this.setCountry = ChinaRen.setCountry;
}
ChinaRen.Country = "china";
ChinaRen.getCountry = function(){return ChinaRen.Country};
ChinaRen.setCountry = function(strCountry){ChinaRen.Country = strCountry};
alert(ChinaRen.getCountry());
ChinaRen.setCountry("中国");
alert(ChinaRen.getCountry());
var chinaRen = new ChinaRen();
alert(chinaRen.getCountry());
chinaRen.setCountry("中国");
alert(chinaRen.getCountry());
</script>