Доступ / вызов функции BaseClass из дочернего класса - PullRequest
0 голосов
/ 05 ноября 2011

В Javascript у меня есть дочерний объект, который наследуется от базового объекта. Я пытаюсь вызвать функцию базового класса из дочернего объекта, но получаю сообщение о том, что эта функция не существует.

Можете ли вы сказать мне, как я вызываю функцию базового класса из дочернего класса?

  function BaseClass()
  {
     this.render = function()
     {
        alert("BaseClass::render()");
     }
  }

  function ChildClass()
  {
     this.render = function()
     {
        alert("BaseClass::render()");

        // Now to CALL the base class render() function
        this.baseRender = BaseClass.prototype.render;
        this.baseRender(); // I get the error: "The function this.BaseRender() does not exist"
     }
  }

  ChildClass.prototype             = new BaseClass();    // inherit from BaseClass
  ChildClass.prototype.constructor = ChildClass;         // put the correct constructor reference back (not essential)

1 Ответ

1 голос
/ 05 ноября 2011

РЕДАКТИРОВАТЬ: ОК, либо я почему-то не видел последние две строки вашего кода, либо вы сделали быстрое редактирование после того, как я начал писать свой пост.

У вас нет дочернего класса, у вас есть два несвязанных класса.

Также метод render() в BaseClass в настоящее время не является частью его прототипа, он присваивается каждому экземпляру, созданному с помощью new BaseClass(). Что означает BaseClass.prototype.render не определено.

(И вы изменили регистр с прописных букв на строчные буквы b между присваиванием this.baseRender и попыткой вызвать this.BaseRender(), но я предполагаю, что это, вероятно, просто опечатка.)

Я думаю, что самое простое изменение в том, что вы пытаетесь сделать, это:

function BaseClass()
{
   // instance init here
}

BaseClass.prototype.render = function() {
   alert("BaseClass::render()");
}

И помните, что JavaScript не имеет «классов» как таковых.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...