zoukankan      html  css  js  c++  java
  • JS——面向对象和类的继承

    一、POP 和 OOP

    (1)面向过程编程 POP (Process-oriented programming)

    面向过程:分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用即可

    优点:性能高,适合跟硬件联系很紧密的东西,例如单片机就是面向过程编程

    缺点:没有面向对象易维护、易复用、易扩展

    (2)面向对象编程 OOP(Object oriented programming)

    面向对象:把事物分解成一个个对象,然后由对象之间分工与合作(以对象的功能来划分问题,而不是步骤)

    优点:灵活、代码可复用、容易维护和开发、适合多人合作的大型软件项目

    缺点:性能比面向过程低

    特性:封装性、继承性、多态性

    思维特点

    1.抽取(抽象)对象共用的属性和行为组织封装成一个类(模板)

    2.对类进行实例化,获取类的对象

    二、ES6中的类和对象

    2.1 对象 

    在JS中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等

    对象是由属性方法组成的:

    属性:事物的特征(名词)

    方法:事物的行为(动词)

    2.2 类 class

    使用class关键字声明一个类,之后以这个类来实例化对象

    抽象了对象的公共部分,泛指某一个大类

    对象特指某一个,通过实例化一个具体的对象

    2.3 创建类

    class name {
        // class body
    }
    var xx = new name()//必须使用new实例化对象

    2.4 类 constructor 构造函数

    constructor()方法是累的构造函数(默认方法),用于传递参数,返回实例对象,通过new命令生成对象实例时,自动调用该方法,如果没有显示定义,类内部会自动给我们创建一个constructor()

    //1.创建类 class 创建一个 Star 类
    class Star { constructor(uname) { // 构造函数 可以接受传递过来的参数,同时返回实例对象
    this.uname = uname; //这里的 this 指向我们创建的实例对象 }
    sing(song){ // 类里面的函数不需要写 function;多个函数之间不需要添加逗号分隔
    console.log('我唱歌');
    console.log(this.uname + song) }
    //2.利用类创建对象 new var ldh = new Star('刘德华') var zxy = new Star('张学友')
    ldh.sing('冰雨');
    zxy.sing('李香兰');

    三、类的继承

    3.1 继承 extends

    3.2 super() ——调用父类中的构造函数

    3.3 super() ——调用父类中的普通函数 

    3.4 子类继承父类方法的同时扩展自己的方法

    var son = new Son(5,3);
    son.subtract();
    son.sum();

    过程:通过super(x,y) 把 5和3 传递给了父类的构造函数,这样就可以正确调用父类的sum函数,这时候sum函数中的this.x和this.y就可以正确计算

    之后通过 this.x=x; this.y=y 分别把5和3 传递给了子类的构造函数,这里的this指向的是子类的对象

    注意事项:

    1.在 ES6 中没有变量提升,必须先定义类,才能通过类实例化对象

    2.类里面的共有属性和方法一定要加this使用

    3. constructor里面的this指向实例对象,方法里面的this指向这个方法的调用者,如果是实例对象调用的这个方法,那this就指向实例对象,如果是按钮调用的这个方法,那this就指向这个按钮

    var ldh = new Star('刘德华')
    console.log(that === ldh); // true
    ldh.dance();
    console.log(_that === ldh); //true
  • 相关阅读:
    Java-MyBatis-MyBatis3-XML映射文件:select
    Java-MyBatis-MyBatis3-XML映射文件:XML映射文件
    专业词汇-计算机-Java:JPA
    图书-计算机-软件编程-SpringBoot:《Spring Boot 企业级应用开发实战》
    图书-计算机-软件编程-SpringBoot:《Spring Boot2 + Thymeleaf 企业应用实战》
    svndumpfilter
    svnlook
    svnadmin
    svn
    sum
  • 原文地址:https://www.cnblogs.com/ccv2/p/12687297.html
Copyright © 2011-2022 走看看