Como definir o setter / getter no protótipo
EDIT outubro 2016: Por favor, note que esta pergunta foi feita em 2012. A cada mês alguém adiciona uma nova resposta ou comentário que refuta uma resposta, mas não faz sentido fazê-lo, pois a pergunta está provavelmente desatualizada (lembre-se, foi paraJavascript do Gnome escrever extensões do gnome-shell, não coisas do navegador, o que é bastante específico).
Segueminha pergunta anterior sobre como fazer subclasses em Javascript, eu estou fazendo uma subclasse de uma superclasse assim:
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.
Minha pergunta é,Como defino um setter / getter no protótipo com esta sintaxe?
Eu costumava fazer:
Subclass.prototype = {
__proto__: Superclass.prototype,
/* other methods here ... */
get myProperty() {
// code.
}
}
Mas obviamente o seguinte não funciona:
Subclass.prototype.get myProperty() { /* code */ }
Estou usando o GJS (GNOME Javascript), e o mecanismo deve ser o mais ou menos o mesmo do Mozilla Spidermonkey. Meu código não é destinado a um navegador, desde que seja suportado pelo GJS (eu acho que significa Spidermonkey?), Eu não me importo se não for compatível.