JSFiddle - React, Tailwind, and code Playground
HTML
<button onclick="testInstantiation();">Exibe Resultado da Instanciação (no console)</button>
JavaScript
/**
* Construtor da classe abstrata.
* @abstract
* @constructor
*/
var Base = function() {
if (this.constructor === Base) {
throw new Error("Não pode instanciar classe abstrata!");
}
// atributos da instância
this.Attribute = "O atributo diz: Olá Planeta!";
};
/**
* Método que retorna o texto do teste.
* @return String com o texto de teste.
*/
Base.prototype.Method = function() {
return "O método diz: Olá Mundo!";
}
/**
* Método abstrato.
* @abstract
*/
Base.prototype.AbstractMethod = function() {
throw new Error("Método abstrato!");
}
/**
* Construtor da classe derivada.
* @constructor
*/
var Derived = function() {
Base.apply(this, arguments);
};
Derived.prototype = Object.create(Base.prototype);
Derived.prototype.constructor = Derived;
/**
* Método concreto.
*/
Derived.prototype.AbstractMethod = function() {
return "Não sou mais abstrato!";
}
/**
* Função de teste de instanciação.
*/
window.testInstantiation = function() {
// instancia classe derivada...
var oTest = new Derived();
console.log(oTest.Attribute);
console.log(oTest.Method());
console.log(oTest.AbstractMethod());
// tenta instanciar classe abstrata
new Base();
};