js利用Class实现面向对象思想

// 静态方法

class A {
  constructor (){

  }
  static bar(){

  }
}

// 静态变量

class A {
  constructor (){

  }
  static bar(){

  }
}

// 私有变量

class A {
  constructor (){
    var private = 1
    this.foo = function(){
      return private;
    }
  }
  getPrivate(){
    this.private();
  }
}

// 私有方法(与私有属性相同,使用特权方法访问)

class A {
  constructor (){
    const bar = () => {
      console.log('this is private method');
    };
    super();
    this.foo = function() {
      bar();
    };
  }
}

// 抽象类(利用new.target)

const A = class Bar {
  constructor() {
    console.log(new.target);
    if (new.target == Bar) {
      throw Error('Class Bar should be new by its child class');
    }
  }
  foo() {}
};

class B extends A {
  constructor() {
    super();
  }
  foo() {
    console.log('I am B');
  }
}
class C extends A {
  constructor() {
    super();
  }
  foo() {
    console.log('I am C');
  }
}
// var a = new A();
// a.foo();
var c = new C();
c.foo();

猜你喜欢

转载自blog.csdn.net/weixin_39181833/article/details/81807439