:javascriptクラスの属性、クラスの方法、クラスの実例、実例の属性、実例の方法、prototype、auプロト.テストと結果

4272 ワード


<script>   
    function Circle( radius ){    
        this.r = radius;    
        this.des = "  ";   
           
        this.showInfo = function(){   
            alert("    "+this.des);   
        }  
    }  

    function Circle_area(r){ return Circle.PI*this.r*this.r; }  

    function Circle_perimeter(r){ return  2*Circle.PI*r;}  

    Circle.PI = 3.14;  
    Circle.perimeter = Circle_perimeter;  
    Circle.prototype.area = Circle_area;  

    var c = new Circle(3);  

    //       
    //alert(Circle.PI )//3.14  
    //alert(c.PI)//undefined           ,           ,          。  
    //alert(c.constructor.PI)//3.14              ,                ,          
    //alert(Circle.des)//undefined     Circle    this.des  this         ,    r   ,       。  
    //alert(c.des)//   this          c。  

    /*  :  
                :            ,                        ,      。  
                  .          。                   ,           .constructor    
                  ,               
         javascript    :    javascript           (               javascript          
          ),                       (       ,             ,          
                         this               [c.prototype      this.       、  ]:)  
               ,                c             PI,      c.constructor         
             ,             。 
     */  

    //       
    //alert(Circle.perimeter(3)); //18.4           。  
    //alert( c.perimeter(3) ); //FF:c.perimeter is not a function IE:           。  perimeter   Circle     ,             
    //alert(c.constructor.perimeter(3));//18.84          (   )   (  )。  
    //alert(c.area(3))//28.25.... Circle  prototype      area     Circle        。  
    //alert(Circle.area(3));//FF:   : Circle.area is not a function    area   Circle         ,   Circle      。  

     //  :  ,        ,          。  

     //  prototype      
     //alert(c.prototype); //undefined       ptototype         
     //alert(Circle.prototype); //object Object   
     //alert(Circle.prototype.constructor)//  Circle    (     ),   alert(Circle)  
     //alert(Circle.prototype.area(3));//NaN       ,        NaN,   area     this.r undefined。  
     //alert(Circle.prototype.PI) //undefined  PI   Circle        ,    prototype       
     //alert(Circle.prototype.constructor.PI)//3.14   Circle                  (   ),        PI  。  

     /*  :prototype     javascript               。  
            Javascript  :1.       prototype  ,        prototype  ,              prototype    
            。。2. prototype       constructor  ,                (        :A  B,B  A...)  
        3.prototype  (           ,  ,        ,      ,                    ,  
                 。                。)              prototype               
            (function A(){} A.prototype.pa = function(){} var oA = new A();   oA        pa)。  
     */  

     /*        ,           。  
         1.javascript                      ,           this              (     
                     )。            this  ,            。2.javascript            
             ,     __proto__              。                   ,           
              ,    ,      ,javascript       ,   。                           
                   ?                               ,javascript             
                    ,  ,       ,                    。   */  

     //  __proto__    
     //alert(c.__proto__)//FF:object IE8:undefined      Circle.prototype,             Circle prototype  。  
     //  IE8        __proto__  ,        FF   。  
     //alert(c.__proto__.PI)//undefined           PI  ,PI    Circle       
     //alert(c.__proto__.area(3))//NaN        ,    NaN        this.r undefined。  

     /*  :__proto__                  prototype     ,            prototype,      
                  ,           。*/  
</script>