2011-11-05 107 views
0

在Javascript中,我有一个从基础对象继承的子对象。我想从一个子对象中调用一个基类函数,但我得到一个错误,说这个函数不存在。从子类访问/调用BaseClass函数

你能告诉我如何从一个子类中调用基类函数吗?

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

当我听到人们谈论JavaScript类时,它总是让我感到:/ –

回答

1

编辑:好的,要么我有点没看你的代码的最后两行,或者你做了一个快速编辑后,我开始写我的文章。

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

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

(你已经从较低为大写“B”在改变的情况下分配this.baseRender,并试图打电话this.BaseRender()之间,但我认为这可能只是一个错字。)

我觉得最简单的做你想做的事情是这样的:

function BaseClass() 
{ 
    // instance init here 
} 

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

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