快速业务通道

JavaScript类

作者 佚名技术 来源 网页制作 浏览 发布时间 2012-03-07
ser();
  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) 
  {
    //方法代码
  }
  
  我们现在就来定义一个无忧用户类的注册新用户静态方法:
  
  WuYouUser.prototype.AddOne = function()
  {
    //***  同样具体代码不写出来,给静态属性Count增加1,表示注册用户数量又多一个
    WuYouUser.prototype.Count++;
  }
  
  现在我们来看看如何用它,同样有两种方法:
  
  1.直接使用WuYouUser.prototype.AddOne()
  2.使用某实例的AddOne()
  
  这两种方法没有什么不同:
  
  var Wo = new WuYouUser();
  var Biyuan = new WuYouUser();
  document.write(WuYouUser.prototype.Count); // 0
  
  Wo.AddOne();
  document.write(WuYouUser.prototype.Count); // 1
  document.write(Wo.Count); // 1
  document.write(Biyuan.Count); // 1
  
  WuYouUser.prototype.AddOne();
  document.write(WuYouUser.prototype.Count); //

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号