从子类访问/调用基类功能

时间:2011-11-05 03:44:05

标签: javascript inheritance

在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 个答案:

答案 0 :(得分:1)

编辑:好的,要么我以某种方式看不到代码的最后两行,要么在我开始撰写帖子后进行了快速编辑。

你没有子课,你有两个不相关的课。

render()上的BaseClass方法目前不是其原型的一部分,它被分配给使用new BaseClass()创建的每个实例。这意味着BaseClass.prototype.render未定义。

(并且你在分配this.baseRender和试图调用this.BaseRender()之间改变了从小写到大写“b”的案例,但我认为这可能只是一个错字。 )

我认为做你想做的最简单的改变是:

function BaseClass()
{
   // instance init here
}

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

请记住,JavaScript并没有真正拥有“类”。