JavaScript basado -class aprendizaje

clase

es6 añadió una clase, puede hacer un mejor uso de las clases y los patrones de diseño de herencia, que contiene súper azúcar sintáctico puede lograrse anulación heredada, el método de la clase.
El método no tiene por qué tecla de función de escritura
no puede declarar una propiedad, sólo se puede declarar métodos
pueden ser heredados objetos internos, como la matriz

  class A {
    constructor(name) {
      this.name = name;
    }

    sayHello() {
      console.log(`hello ${this.name}`);
    }

    saySeeYou() {
      console.log('see you');
    }
  }

  class B extends A {
    constructor(name, age) {
      super(name);
      this.age = age;
    }

    sayHello() {
      super.sayHello();
      console.log(`age ${this.age}`);
    }
  }

  var a = new A('jsong');
  a.sayHello(); // hello jsong
  var b = new B('jsong', '11');
  b.sayHello(); // hello jsong
  // age 11

  b.saySeeYou(); // see you
redacción ES5

Superficiales clases de escritura y ES6 Java es muy similar, pero la relación entre las clases y subclases de objetos y relaciones aún son prototipos por encargo, sin copia de la clase. Sin embargo, en la implementación interna de una clase de escritura js tediosas, vamos a utilizar más fácilmente la clase.
redacción ES5

  function A(name) {
    this.name = name;
  }
  A.prototype.sayHello = function() {
    console.log(`hello ${this.name}`);
  };
  A.prototype.saySeeYou = function() {
    console.log('see you');
  };

  function B(name, age) {
    A.call(this, name);
    this.age = age;
  }
  B.prototype = Object.create(A.prototype);
  B.prototype.sayHello = function() {
    A.prototype.sayHello.call(this);
    console.log(`age ${this.age}`);
  };

  var a = new A('jsong');
  a.sayHello(); // hello jsong
  var b = new B('jsong', '11');
  b.sayHello(); // hello jsong
  // age 11

  b.saySeeYou(); // see you
la clase de prototipo o relación

clase no implementa clases y objetos relación de replicación, es todavía por [[Prototype]] comisión, por lo que habrá una referencia a un objeto es una relación de objeto con
el método para modificar la clase prototipo C, si es el objeto de c1 o c2 nuevo objeto cambiarán su enfoque, ya que el prototipo c1 y c2 se ponen en marcha de forma conjunta la clase C de.

  class C {
    sayHello() {
      console.log('hello world');
    }
  }

  var c1 = new C();
  c1.sayHello(); // hello world

  C.prototype.sayHello = function() {
    console.log('see you world');
  };

  var c2 = new C();
  c2.sayHello(); // see you world

  c1.sayHello(); // see you world
¿Cómo declarar la propiedad

No estén autorizados a declarar atributos de clase, pero podemos añadir propiedades necesitan ser declaradas en la clase del objeto protype

  class C {
    constructor() {
      C.prototype.count++;
      console.log(`hello ${this.count}`);
    }
  }

  C.prototype.count = 0;

  var c1 = new C(); // hello 1
  console.log(c1.count); // 1
  var c2 = new C(); // hello 2
  console.log(c1.count); // 2
  console.log(c2.count); // 2

Publicado 83 artículos originales · ganado elogios 21 · Vistas a 50000 +

Supongo que te gusta

Origin blog.csdn.net/JsongNeu/article/details/97169002
Recomendado
Clasificación