Как определить сеттер / геттер по прототипу
EDIT Oct 2016Обратите внимание, что этот вопрос был задан в 2012 году. Каждый месяц или около того кто-то добавляет новый ответ или комментарий, который опровергает ответ, но на самом деле это не имеет смысла, поскольку вопрос, вероятно, устарел (помните, что это было дляGnome Javascript писать расширения оболочки gnome, а не вещи браузера, что довольно специфично).
Следующиймой предыдущий вопрос о том, как сделать подклассы в Javascript, я делаю подкласс суперкласса так:
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.
Мой вопросhow do I define a setter/getter on the prototype with this syntax?
Обычно я делал:
Subclass.prototype = {
__proto__: Superclass.prototype,
/* other methods here ... */
get myProperty() {
// code.
}
}
Но очевидно, что следующее не сработает:
Subclass.prototype.get myProperty() { /* code */ }
Я использую GJS (GNOME Javascript), и предполагается, что этот движок более или менее такой же, как и Mozilla Spidermonkey. Мой код не предназначен для браузера, поэтому, пока он поддерживается GJS (я полагаю, что это означает Spidermonkey?), Я не возражаю, если он не является кросс-совместимым.