我正在使用this创建一些类并设置一些继承结构。
var ControlType = Class.extend({
init: function(){ },
html: function(type){
//Get template based on name of subclass
}
});
var YesNo = ControlType.extend({
init: function(){ },
html: function() {
this._super('YesNo')
}
});
现在我想知道是否可以在ControlType.html
中获取子类的类型而不明确地传递它?
我尝试了this.constructor
没有像某人建议的扩展功能,但这会返回父类的类型。所以在下面的例子中,控制台记录了Person(),但我需要Jimi()。
function Person(){
this.say = function(){
console.log(this.constructor);
}
}
function Jimi(){
this.name = 'Jimi';
}
Jimi.prototype = new Person();
var j = new Jimi();
j.say();
答案 0 :(得分:3)
很难选择,因为实际上有几种不同的方法可以做到这一点。我想最简单的可能就是这样:
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();
var j = new Jimi();
j.say();
然后输出
Jimi
希望它有所帮助!
答案 1 :(得分:0)
看起来你正在使用某种继承库。我不确定extend
的作用,但在纯JavaScript中,您可以使用this.constructor
来引用对象的构造函数。