• JS中prototype属性-JS原型模式


      1 /*
      2  *对象方法
      3  *类方法
      4 * 原型方法
      5 */
      6     function People(name) {
      7         this.name = name;
      8         this.say = function () {  //对象方法
      9             alert("my name is  "+this.name);
     10         }
     11     }
     12 
     13     People.run = function () {  //类方法(静态方法,只能由类名调用)
     14         alert("i can run");
     15     }
     16 
     17     People.prototype.sayChinese = function () {//原型方法
     18         alert("我的名字是:"+this.name);
     19     }
     20 
     21     var p1 = new People("menglinghua");
     22     p1.say();
     23     People.run();
     24     p1.sayChinese();
     25 
     26     p1.prototype  //无法获取????????
     27     p1.run();  //无法调用???
     28     p1.sayChinese(); //可以调用
     29   
     30     People.say();//无法调用????????
     31     People.sayChinese();//无法调用????????
     32 
     33     People.prototype.say();//无法调用????????
     34     People.prototype.run();//无法调用????????
     35 
     36  
     37 /*
     38 *eg1
     39 */
     40 function baseClass()
     41 {
     42     this.showMessage = function () {
     43         alert("baseClass::showMessage()");
     44     }
     45 }
     46 
     47 function extendClass()
     48 {
     49 
     50 }
     51 
     52 extendClass.prototype = new baseClass();
     53 var extendClassObj = new extendClass();
     54 extendClassObj.showMessage(); //输出"baseClass::showMessage()"
     55 
     56 
     57 /*
     58 *eg2 两个类含有同名方法
     59 */
     60 function baseClass() {
     61     this.showMessage = function () {
     62         alert("baseClass::showMessage( )");
     63     }
     64 }
     65 
     66 function extendClass() {
     67     this.showMessage = function () {
     68         alert("extendClass::showMessage( )");
     69     }
     70 }
     71 
     72 extendClass.prototype = new baseClass();
     73 var extendClassObj = new extendClass();
     74 extendClassObj.showMessage();  //输出"extendClass::showMessage( )"
     75 
     76 /*
     77 *eg3 让extendClass的实例调用baseClass的同名方法
     78 */
     79 function baseClass() {
     80     this.showMessage = function () {
     81         alert("baseClass::showMessage( )");
     82     }
     83 }
     84 
     85 function extendClass() {
     86     this.showMessage = function () {
     87         alert("extendClass::showMessage( )");
     88     }
     89 }
     90 
     91 extendClass.prototype = new baseClass();
     92 var extendClassObj = new extendClass();
     93 var baseClassObj = new baseClass();
     94 baseClassObj.showMessage.call(extendClassObj);//让【extendClassObj】调用【baseClassObj】的【showMessage】方法
     95 //输出:"baseClass::showMessage( )" 
     96 
     97 /*
     98 *eg4 
     99 */
    100 function baseClass()
    101 {
    102     this.showMessage = function () {
    103         alert("baseClass::showMessage( )");
    104     }
    105     this.baseShowMessage = function () {
    106         alert("baseClass::baseShowMessage");
    107     }
    108 }
    109 baseClass.showMessage = function () {
    110     alert("baseClass::showMessge static");
    111 }
    112 
    113 function extendClass()
    114 {
    115     this.showMessage = function () {
    116         alert("extendClass::showMessage( )");
    117     }
    118 }
    119 
    120 extendClass.prototype = new baseClass();
    121 var extendClassObj = new extendClass();
    122 
    123 extendClassObj.showMessage();//输出:extendClass::showMessage( )
    124 extendClassObj.baseShowMessage();//输出:baseClass::baseShowMessage
    125 
    126 baseClass.showMessage.call(extendClassObj);//输出:baseClass::showMessge static
    127 
    128 var baseClassObj = new baseClass();
    129 baseClassObj.showMessage.call(extendClassObj);//输出:baseClass::showMessage( )

    http://www.cnblogs.com/yjf512/archive/2011/06/03/2071914.html

  • 相关阅读:
    JS-Date日期内置对象
    JS-string内置对象
    MyBatis的事务处理
    MyBatis的简单操作
    MyBatis第一个项目示例
    CSS-盒子模型
    百分比布局的使用
    使用TabLayout快速实现一个导航栏
    彻底理解android中的内部存储与外部存储
    Eclipse的LogCat总是自动清空怎么办?
  • 原文地址:https://www.cnblogs.com/myboke/p/4700948.html
Copyright © 2020-2023  润新知