Mon but est d'avoir un objet widget et d'avoir des widgets spécifiques pour étendre cet objet. Je voudrais empêcher les gens d'avoir à appeler le callback explicitement dans chaque définition de widget en l'étendant en quelque sorte dans le parent (Widget). Quelle est la meilleure façon d'y parvenir?Javascript "extension" d'une méthode dans un sous-objet ou une sous-classe
var Widget = function (options) {
// super class
if (this.constructor === Widget) {
throw new Error("You can't instantiate abstract class.");
}
var widget = this.__proto__;
Widget.renderCallBack = function(){
//alert('the widget has rendered');
}
this.render = (function(){
var _render = this.render;
return function(){
_render();
Widget.renderCallBack();
}
})
}
Widget.constructor = Widget;
var SpecialWidget = function(options) {
Widget.apply(this, arguments);
}
SpecialWidget.prototype = Object.create(Widget);
SpecialWidget.constructor = SpecialWidget
SpecialWidget.prototype.render = function(){
// render something
}
new SpecialWidget(options);
je passerais dans le renderCallback en option pour SpecialWidget et mettez-est de rendre la méthode de l'appeler. __var sw = new SpecialWidget ({renderCallback: function() {}}); __ – cstuncsik
Cela fonctionnerait mais j'essaye d'abstraire ce "callback" dans l'objet Widget car je veux que tous les "widgets spéciaux" aient une fonction de rendu , et je veux que la même chose se produise après que chaque fonction de rendu s'exécute sans devoir coder explicitement cela dans chacun. Est-ce possible/une bonne idée? –