zoukankan      html  css  js  c++  java
  • class

    class

    • 实际上是一个function,但不存在函数提升

      • 同样可以通过两种方式定义

        class User{

        }
        //或者
        var User = class {
           
        }
    • 在其中通过构造函数声明属性,可以通过计算属性声明

      constructor(name, email) {
         this.name = name;
         this.email = email;
      }
    • 创建类对象

      var student1 = new User('ashen', 'ashen@ashen.com');
    • 在其中声明方法

      website(){
         console.log(`http://${this.email}`)
      }
      //所有通过此类创建的对象都可以调用
    • 声明静态方法

      • 只能被类调用,不能被实例对象调用的方法

        static describtion(){
           console.log('I am a user of QQ')
        }
    • set和get

      set address(value){
         this.info = value
      }
      get address(){
         return this.info;
      }
      • 通过类.属性 = ...的方式为其设置值

      • 通过类.属性的方式获取值

        User.address = '忠科绿苑'
        "忠科绿苑"
        User.address
        "忠科绿苑"

    class 的继承

    • 通过extends关键字进行继承

    • constructor中传入基类的属性,并在其中通过super声明

      class Dog extends Animal {
         constructor(name, age) {
             super(name);
             this.age = age;
        }
      }
    • 继承了基类中所有属性和方法,可以在实例对象中直接调用基类方法

    • 若子类中有和基类的同名函数,子类中的函数会将基类中的覆盖

    扩展内建对象数组

    • 此时super中的this会指向Array,因此newArr可以访问Array的所有属性和方法

    class newArr extends Array {
       constructor(name) {
           super();
           this.name = name;
      }

    }
    • 添加属性

      • 在构造函数中声明

      • 添加到super中

        constructor(name, ...items) {
           super(...items);
           this.name = name;
        }
    • 添加方法,直接在子类中定义

  • 相关阅读:
    模板方法模式
    备忘录模式
    观察者模式
    中介者模式
    迭代器模式
    Char型和string型字符串比较整理
    命令模式
    责任链模式
    代理模式
    dokcer 杂谈
  • 原文地址:https://www.cnblogs.com/ashen1999/p/12559846.html
Copyright © 2011-2022 走看看