zoukankan      html  css  js  c++  java
  • js面向对象浅析

    1.类结构剖析

    function fn(){
          var variable = "";  //特定属性
          function method(){};   //特定方法
          this.propertyName = value;   //公共属性 
          this.method = function(){};//公共方法
    }

    ps: 特定属性和特定方法是用于函数fn内部使用的,不可被外界访问。而公共属性和公共方法是在函数被new后所创建的对象应该拥有的属性和方法,因此说可以被外界所访问。若没有new关键字,则会被认为是普通函数调用,this指向会是window对象。

         此外,还可以直接这样写:

         fn.propertyName 或 fn.method = function(){};

         就好比java中类的静态变量,在js里实例不能使用类的成员变量,这是因为实例没有继承到类的成员,继承是靠原型链prototype来实现的。java中类和对象都可以使用。

    2.矩形类

    function Rect(width.height){
       this.r_width= width;
       this.r_height= height;
       this.desc = function(){
           return '我是一个矩形哦';
       };
    };
    
    //扩展矩形计算面积方法
    Rect.prototype.getArea = function(){
       return this.r_width * this.r_height;
    };
    
    //打印结果函数
    Rect.prototype.toString = function(){
    alert("这个矩形的面积是:"+this.getArea()+",宽度是:"+this.r_width+",高度是:"+this.r_height);
    };

    3.平行四边形类

    function Square(value){
        this.s_width = value;
        this.s_height = value;
    };
    
    Square.prototype = Rect.prototype; //将Rect的prototype对象赋给Square,拿不到Rect的特有属性和方法,并且会覆盖Square中原有扩展的属性或方法。若不想被覆盖,可在后面继续加Square.prototype.method= function{};
    
    Square.prototype = new Rect();//这种写法会拿到Rect特有的属性和方法,还包括Rect中原型链的东西。同时也需要注意Square.prototype容易被覆盖的问题,一般写在后面扩展。
    
    例如:
    Square.prototype.say = function(){
         return "我是一个平行四边形";
    };
    
    同时也可对继承过来的属性和方法进行覆盖
    
    Square.prototype.getArea  = function(){
        return this.s_width * s_height;
    }
    

      

  • 相关阅读:
    【故障处理】ORA-12162: TNS:net service name is incorrectly specified (转)
    android studio 编程中用到的快捷键
    java时间格式串
    android Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
    linux安装vmware
    x1c 2017 安装mint18的坑——grub2
    x1c2017 8G版 win linux的取舍纠结记录
    python的try finally (还真不简单)
    kafka+docker+python
    json文件不能有注释
  • 原文地址:https://www.cnblogs.com/dzyBlog/p/5147003.html
Copyright © 2011-2022 走看看