Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Доступ к прототипу из класса родителя 
V
    Опции темы
Megas
Дата 30.3.2013, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.1.2006

Репутация: нет
Всего: нет



Допустим есть следующая конструкция:

Код

function AbstractClass() {
    this.func1 = function(){
        ...
    };
}

function ChildClass() {
    this.func2 = function(){
        ...
    };
}

ChildClass.var1 = 'test';
ChildClass.prototype = new AbstractClass();

var b = new ChildClass();


Внутри одной из функций объекта b, нужно получить доступ к статичной переменной своего класса var1.
Если вызываемая функция находится в классе ChildClass, то это делается просто:
Код

console.log(this.construstor.var1);

Но вот если функция находится в родительском классе (в данном случае в AbstractClass), то это уже не сработает. На данный момент я лишь придумал кривое, как мне кажется, решение, которое мне не очень нравится.

Код

function AbstractClass() {
    this.func1 = function(){
        console.log(this._proto.var1);
    };
}

function ChildClass() {
    this._proto = ChildClass;
    this.func2 = function(){
        console.log(this._proto.var1);
    };
}

ChildClass.var1 = 'test';
ChildClass.prototype = new AbstractClass();


Как можно решить эту проблему более элегантней? 
PM WWW   Вверх
Amphiluke
Дата 30.3.2013, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Обычно в подобных реализациях «классического» наследования ссылку на конструктор в подклассах восстанавливают явно:
Код

ChildClass.prototype = new AbstractClass();
ChildClass.prototype.constructor = ChildClass;

PM   Вверх
Megas
Дата 2.4.2013, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 15.1.2006

Репутация: нет
Всего: нет



Amphiluke, 
понял. спасибо.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0776 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.