EDIT Oct. 2016 : Veuillez noter que cette question a été posée en 2012. Chaque mois ou presque, quelqu'un ajoute une nouvelle réponse ou un commentaire qui réfute une réponse, mais cela n'a pas vraiment de sens de le faire car la question est probablement dépassée (rappelez-vous, c'était pour Gnome Javascript pour écrire des extensions gnome-shell, pas des trucs de navigateur, ce qui est assez spécifique).
Suivant ma question précédente sur la façon de faire des sous-classes en Javascript, je fais une sous-classe d'une super-classe comme ceci :
function inherits(Child,Parent) {
var Tmp = function {};
Tmp.prototype = Parent.prototype;
Child.prototype = new Tmp();
Child.prototype.constructor = Child;
}
/* Define subclass */
function Subclass() {
Superclass.apply(this,arguments);
/* other initialisation */
}
/* Set up inheritance */
inherits(Subclass,Superclass);
/* Add other methods */
Subclass.prototype.method1 = function ... // and so on.
Ma question est la suivante , comment définir un setter/getter sur le prototype avec cette syntaxe ?
J'avais l'habitude de le faire :
Subclass.prototype = {
__proto__: Superclass.prototype,
/* other methods here ... */
get myProperty() {
// code.
}
}
Mais il est évident que ce qui suit ne fonctionnera pas :
Subclass.prototype.get myProperty() { /* code */ }
J'utilise GJS (GNOME Javascript), et le moteur est censé être plus ou moins le même que celui de Mozilla Spidermonkey. Mon code n'est pas destiné à un navigateur, donc tant qu'il est supporté par GJS (je suppose que cela signifie Spidermonkey ?), cela ne me dérange pas s'il n'est pas cross-compatible.