我有这个基类:
function Transition(slide, settings){
this.slide = slide;
this.settings = settings;
this.duration = (this.settings['transitionSpeed'] / 1000) + 's'
}
Transition.prototype.removeOrderClasses = function(){
DomUtil.removeClass(this.slide, 'nd-slide-current');
DomUtil.removeClass(this.slide, 'nd-slide-next');
DomUtil.removeClass(this.slide, 'nd-slide-previous');
}
我从FadeTransition中得到它:
function FadeTransition(slide, settings){
Transition.call(this, slide, settings);
}
FadeTransition.prototype = Object.create(Transition);
FadeTransition.prototype.constructor = FadeTransition;
FadeTransition.prototype.in = function(){
this.removeOrderClasses(); //KABOOM
}
this.removeOrderClasses
会抛出错误,因为无法找到该方法。但是,找到this.prototype.removeOrderClasses
。
我应该如何引用这些功能?如果我有多个级别的继承,我不需要编写这些繁琐的语句:this.prototype.prototype.someMethod()
?
答案 0 :(得分:1)
您将错误的对象传递给Object.create
。它应该是:
FadeTransition.prototype = Object.create(Transition.prototype);
否则,您正在创建一个继承自Transition
函数的新对象,而不是Transition.prototype
,其中定义了所有原型方法。
这也是this.prototype.removeOrderClasses
“工作”的原因。普通对象没有原型属性(试一试:console.log(({}).prototype)
),但this.prototype
引用Transition.prototype
。