我思故我强

js prototype

  1. function Person(name,sex) {   //Person类的构造函数      
  2.      this .name = name;      
  3.      this .sex = sex;      
  4. }      
  5. Person.prototype.age =  12 ;    //为Person类的prototype属性对应的prototype对象的属性赋值,      
  6.                               //相当于为Person类的父类添加属性      
  7. Person.prototype.print = function() {  //为Person类的父类添加方法      
  8.     alert( this .name+ "_" + this .sex+ "_" + this .age);      
  9. };      
  10.      
  11. var p1 =  new  Person( "name1" , "male" );  //p1的age属性继承子Person类的父类(即prototype对象)      
  12. var p2 =  new  Person( "name2" , "male" );      
  13.      
  14. p1.print();   //name1_male_12      
  15. p2.print();   //name2_male_12      
  16.      
  17. p1.age =  34 //改变p1实例的age属性   p1属性在不指向Person的prototype属性   
  18. p1.print();   //name1_male_34      
  19. p2.print();   //name2_male_12      
  20.      
  21. Person.prototype.age =  22 ;   //改变Person类的超类的age属性      
  22. p1.print();   //name1_male_34(p1的age属性并没有随着prototype属性的改变而改变)      
  23. p2.print();   //name2_male_22(p2的age属性发生了改变)      
  24.      
  25. p1.print = function() {   //改变p1对象的print方法      
  26.     alert( "i am p1" );      
  27. }      
  28.      
  29. p1.print();   //i am p1(p1的方法发生了改变)      
  30. p2.print();   //name2_male_22(p2的方法并没有改变)      
  31.      
  32. Person.prototype.print = function() {  //改变Person超类的print方法      
  33.     alert( "new print method!" );      
  34. }      
  35.      
  36. p1.print();   //i am p1(p1的print方法仍旧是自己的方法)      
  37. p2.print();   //new print method!(p2的print方法随着超类方法的改变而改变)  

posted on 2009-08-07 13:28 李云泽 阅读(1650) 评论(0)  编辑  收藏 所属分类: javascript


只有注册用户登录后才能发表评论。


网站导航: