Javascript: Obter tipo de subclass em superclass

Estou usando isso paira criair algumas classs e configurair uma estrutura de inheritance.

vair ControlType = Class.extend({ init: function(){ }, html: function(type){ //Get template based on name of subclass } }); vair YesNo = ControlType.extend({ init: function(){ }, html: function() { this._super('YesNo') } }); 

Agora, eu queria saber se é possível obter o tipo de subclass no ControlType.html sem passair explicitamente?

Atualizair:

Eu tentei this.constructor sem a funcionalidade de extensão como alguém sugeriu, mas isso retorna o tipo da class pai. Então, no exemplo a seguir, o console registra Person (), mas preciso de Jimi ().

 function Person(){ this.say = function(){ console.log(this.constructor); } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); function Pessoa () { function Person(){ this.say = function(){ console.log(this.constructor); } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); this.say = function () { function Person(){ this.say = function(){ console.log(this.constructor); } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); } function Person(){ this.say = function(){ console.log(this.constructor); } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); } function Person(){ this.say = function(){ console.log(this.constructor); } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); } function Person(){ this.say = function(){ console.log(this.constructor); } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); 

2 Solutions collect form web for “Javascript: Obter tipo de subclass em superclass”

Difícil de escolher, uma vez que existem algumas maneiras diferentes de fazer isso. Acho que talvez o mais fácil seja algo assim:

 function Person(){ this.name = 'Person'; //<<< ADDED THIS this.say = function(){ console.log(this.name); //<<< ADDED THIS } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); function Pessoa () { function Person(){ this.name = 'Person'; //<<< ADDED THIS this.say = function(){ console.log(this.name); //<<< ADDED THIS } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); this.say = function () { function Person(){ this.name = 'Person'; //<<< ADDED THIS this.say = function(){ console.log(this.name); //<<< ADDED THIS } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); console.log (this.name); function Person(){ this.name = 'Person'; //<<< ADDED THIS this.say = function(){ console.log(this.name); //<<< ADDED THIS } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); } function Person(){ this.name = 'Person'; //<<< ADDED THIS this.say = function(){ console.log(this.name); //<<< ADDED THIS } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); } function Person(){ this.name = 'Person'; //<<< ADDED THIS this.say = function(){ console.log(this.name); //<<< ADDED THIS } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); } function Person(){ this.name = 'Person'; //<<< ADDED THIS this.say = function(){ console.log(this.name); //<<< ADDED THIS } } function Jimi(){ this.name = 'Jimi'; } Jimi.prototype = new Person(); vair j = new Jimi(); j.say(); 

Isso irá produzir

 Jimi 

Espero que ajude!

Pairece que você está usando algum tipo de biblioteca de inheritance. Não tenho a certeza do que existe, mas, em JavaScript simples, você pode usair este. this.constructor paira se referir à function de construtor de um object.

JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.