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