• class类


    1.定义类

    class Person {  // class打头 定义一个类
      constructor(name,age,job){  // constructor 定义一个构造方法
        this.name = name;
        this.age = age;
        this.job = job;
        this.friend = ['Shelby','Court'];
      }
    
      sayName () {  // 声明一个方法
        console.log(this.name);
      }
    }
    
    let person = new Person('张三',26,'司机');
    person.sayName();

    注:ES6中没有方法的重载,即同名函数,后面会覆盖掉前面的。

    2.静态方法:(方法名前面加 static,可以用类名调用的方法,我们称之为静态方法)

    class Point {
      constructor(x,y){
        this.x = x;  // 在类里面,this.xxx = xxx 必须要放在构造方法中
        this.y = y;
      }
    
      static distance(a,b) { // 方法名前面加 static
        const dx = a.x - b.y;
        const dy = a.y - b.y;
        return Math.sqrt(dx*dx + dy*dy);  // sqrt 开平方
      }
    }
    
    let point1 = new Point(3,4);
    let point2 = new Point(18,24);
    let dis = Point.distance(point1,point2);  // 使用类名调用静态方法
    alert(dis);

    3.ES6明确规定,Class内部只有静态方法,没有静态属性,但可以用另外方式解决(将类视为一个对象,给对象加参数)

    class Foo {
    
    }
    
    Foo.prop =1; // 将类视为一个对象,给对象加参数
    
    Foo.prop // 1

    //-------单例模式 (有且只有一个)

    class Cache {
      static getInstance () {
        if(!Cache.instance){
          Cache.instance = new Cache();
        }
        return Cache.instance;
      } 
    }
    
    var cache = Cache.getInstance();

    实例:

    4.继承:

    class Animal {
      constructor(name){
        this.name = name;
      }
    
      speak() {
        console.log(this.name + 'makes a noise');
      }
    }
    
    class Dog extends Animal {  // 继承  只有单继承,没有多继承
    
      speak() {  // 重写speak
        console.log(this.name + 'barks');
      }
    
    }
    
    let dog = new Dog('旺财');
    dog.speak();
    
    // 狗barks
    // 如果Dog里没有speak,则 狗 makes a noise

    .

  • 相关阅读:
    leetcode Super Ugly Number
    leetcode Find Median from Data Stream
    leetcode Remove Invalid Parentheses
    leetcode Range Sum Query
    leetcode Range Sum Query
    leetcode Minimum Height Trees
    hdu 3836 Equivalent Sets
    hdu 1269 迷宫城堡
    hud 2586 How far away ?
    poj 1330 Nearest Common Ancestors
  • 原文地址:https://www.cnblogs.com/crazycode2/p/6675661.html
Copyright © 2020-2023  润新知