EDIT Жовтень 2016 : Зверніть увагу, що це питання було задано у 2012 році. Щомісяця хтось додає нову відповідь або коментар, який спростовує відповідь, але насправді не має сенсу робити це, оскільки питання, ймовірно, застаріло (пам’ятайте, це було для Gnome Javascript для написання розширень гном-оболонка, а НЕ браузер матеріалу, який є вельми специфічний).
Після мого попереднього запитання про те, як зробити підклас у 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.
Моє питання: як мені визначити сеттер / геттер на прототипі за допомогою цього синтаксису?
Раніше я робив:
Subclass.prototype = {
__proto__: Superclass.prototype,
/* other methods here ... */
get myProperty() {
// code.
}
}
Але очевидно, що наступне не буде працювати:
Subclass.prototype.get myProperty() { /* code */ }
Я використовую GJS (GNOME Javascript), і двигун повинен бути більш-менш таким, як у Mozilla Spidermonkey. Мій код не призначений для браузера, тому, поки він підтримується GJS (мабуть, це означає Spidermonkey?), Я не проти, якщо він не сумісний.
__defineGetter__
та__defineSetter
(але я насправді ніколи їх не використовував ...). developer.mozilla.org/en/Core_JavaScript_1.5_Guide/…