zoukankan      html  css  js  c++  java
  • 用prototype属性来模拟一下类的继承

    用prototype属性来模拟一下类的继承:首先定义一个Circle类作为父类,然后定义子类
    PositionCircle.

    Js代码  收藏代码
    1. function Circle(radius) {  //定义父类Circle  
    2.     this.radius = radius;  
    3. }  
    4. Circle.prototype.area = function() { //定义父类的方法area计算面积  
    5.     return this.radius * this.radius * 3.14;  
    6. }  
    7.   
    8. function PositionCircle(x,y,radius) { //定义类PositionCircle  
    9.     this.x = x;                    //属性横坐标  
    10.     this.y = y;                    //属性纵坐标  
    11.     Circle.call(this,radius);      //调用父类的方法,相当于调用this.Circle(radius),设置PositionCircle类的  
    12.                                    //radius属性  
    13. }  
    14. PositionCircle.prototype = new Circle(); //设置PositionCircle的父类为Circle类  
    15.   
    16. var pc = new PositionCircle(1,2,1);  
    17. alert(pc.area());  //3.14  
    18.                    //PositionCircle类的area方法继承自Circle类,而Circle类的  
    19.                    //area方法又继承自它的prototype属性对应的prototype对象  
    20. alert(pc.radius); //1  PositionCircle类的radius属性继承自Circle类  
    21.   
    22. /* 
    23. 注意:在前面我们设置PositionCircle类的prototype属性指向了一个Circle对象, 
    24. 因此pc的prototype属性继承了Circle对象的prototype属性,而Circle对象的constructor属 
    25. 性(即Circle对象对应的prototype对象的constructor属性)是指向Circle的,所以此处弹出 
    26. 的是Circ. 
    27. */  
    28. alert(pc.constructor); //Circle      
    29.   
    30. /*为此,我们在设计好了类的继承关系后,还要设置子类的constructor属性,否则它会指向父类 
    31. 的constructor属性 
    32. */  
    33. PositionCircle.prototype.constructor = PositionCircle  
    34. alert(pc.constructor);  //PositionCircle  

     

  • 相关阅读:
    数据库ALL和ANY的区别
    数据库-关系代数-投影
    数据库关系代数表达式学习
    数据模型的三要素
    题解 P2812 【校园网络【[USACO]Network of Schools加强版】】
    题解 P2746 【[USACO5.3]校园网Network of Schools】
    题解 P2257 【YY的GCD】
    题解 P6476 【[NOI Online #2 提高组]涂色游戏】
    题解 P2522 【[HAOI2011]Problem b】
    题解 P4782 【【模板】2-SAT 问题】
  • 原文地址:https://www.cnblogs.com/liubingna/p/2933660.html
Copyright © 2011-2022 走看看