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