比如给WuYouUser类定义一个注册用户的数量Count:
WuYouUser.prototype.Count = 0;
那么如何读取它呢?有两种方法:
1. 直接用 WuYouUser.prototype.Count
2. 使用Wo.Count
这两者没有区别,都是得到0
虽然读取方法可以有两种,但在改变它的时候却得特别小心了,请看下边代码
var Biyuan = new WuYouUser();
WuYouUser.prototype.Count++;
document.write(Wo.Count);
document.write(Biyuan.Count);
你会发现两者的Count属性都是1,也就是说WuYouUser.prototype.Count改变了会影响到各个实例的相应属性,其实原理就是Wo、Biyuan的Count属性与WuYouUser.prototype.Count根本就是同一个!
现在来看另外一段代码:
var Biyuan = new WuYouUser();
Biyuan.Count++; //特别注意一下这里,这是直接改变Biyuan的Count属性
document.write(Biyuan.Count); // 输出 1
document.write(WuYouUser.prototype.Count); //输出 0
document.write(Wo.Count); //同样输出0,为什么?
可以看到如果直接修改实例的静态属性值,那么会出现其它实例甚至类的静态属性与它不同步了?这是因为直接修改的时候,该实例会生成一个属于该实例的属性Count,这个时候Biyuan.Count不再与WuYouUser.prototype.Count是同一个了,也不与Wo.Count是同一个,这个Count属性是属于Biyuan自己所有的,以后改变了它也只是影响它自己而已。
因此如果不是特别的需要,建议不管在读取还是赋值的时候,都统一使用WuYouUser.prototype.Count这样的方式,以做到万无一失!
静态方法
与静态属性相似,它也有个另称:公共方法,同样属于类本身的。
静态方法的定义方式是:
类名.方法名 = function(参数1,参数2...参数n)










