• ES6学习笔记(二):教你玩转类的继承和类的对象


    继承

    程序中的继承: 子类可以继承父类的一些属性和方法

    class Father { //父类
      constructor () {
        }
    	money () {
      	console.log(100)
      }
    }
    class Son extends Father {  //子类继承父类
    }
    let son = new Son()
    son.money() // 100
    son.
    

    super关键字

    super关键字用于访问和调用对象父类上的函数,可以通过调用父类的构造函数,也可以调用父类的普通函数

    class Father { //父类
      constructor (x, y) {
        this.x = x
        this.y = y
        }
    	money () {
      	console.log(100)
      }
      sum () {
      	console.log(this.x + this.y)
      }
    }
    class Son extends Father {  //子类继承父类
    	constructor (x, y) {
     	 	super(x, y) //调用了父类中的构造函数
      }
    }
    let son = new Son(1,2)
    son.sum() // 3
    son.
    

    继承的特点:

    1. 继承中,如果实例化子类输出一个方法,先看子类有没有这个方法,如果有就先执行子类,(就近原则)
    2. 继承中,如果子类里面没有,就去查找父类有没有这个方法,如果有,就执行父类的这个方法
    3. 在子类中,可以用super调用父类元素的方法
    class Father {
    	say() {
      	return '我是父元素'
      }
      sing() {
      	return '父元素唱一首歌'
      }
        
    }
    class Son extends Father {
    	say() {
        console.log('我是子元素')
      }
      sing() {
      	console.log(super.sing())
      }
    }
    var son = new Son()
    son.say() //我是子元素
    son.sing() //
    

    子元素可以继承父元素的方法的同时,子元素也可以扩展自己的其他方法,子类在构造函数中用super调用父类的构造方法时候,必须放在子类的this之前调用

    class Father {
    	constructor(x, y) {
      	this.x = x
        this.y = y
      }
      sum() {
      	console.log(this.x + this.y)
      }
    }
    
    class Son extends Father {
    	constructor(x,y) {
         //利用super 调用父类的构造函数
        super(x,y)
      	this.x = x
        this.y = y
      }
      subtract() {
      	console.log(this.x - this.y)
      }
    }
    let son = new Son(5,3)
    son.subtract() // 2
    son.sum() //8
    

    ES6中的类和对象的4个注意点:

    1. 在ES6中类没有变量提升,所以必须先定义类,才能通过类实例化对象
    2. 类里面的共有属性和方法一定要加this使用
    3. 类里面的this指向问题
    4. constructor里面的this指向实例对象,方法里面的this向这个方法的调用者

    总结

    这篇文章主要分享了,关于类的继承、继承需要的用到的extends,super、ES6中的类和对象的注意点等。
    如果想了解更多,请扫描二维码
    在这里插入图片描述

  • 相关阅读:
    CentOS6.5安装Scrapy
    CentOS6.5安装pip
    CentOS6.5 安装openssl
    curl不能支持https问题
    pip安装时遇到的问题集锦,持续更新!
    CentOS6.5安装python3.7
    IntelliJ IDEA 17 本地LicenseServer激活
    omnidb数据库web管理工具安装
    CentOS7安装Kubernetes1.18.1并使用flannel
    Portainer中文汉化
  • 原文地址:https://www.cnblogs.com/lfcss/p/12375217.html
Copyright © 2020-2023  润新知