Javascript调用父函数

时间:2012-06-09 10:18:53

标签: javascript call parent

说明中的问题

function Parent(){
    this.alertParent(){
        alert("Parent alert");
    }

    function child(){
        // how can I call to this.alertParent() from here without passing any  
        // parameters?
    }
}

2 个答案:

答案 0 :(得分:8)

你问题的标题令人困惑。非正式术语“父”函数用于调用函数。

在你的情况下,你在构造函数中有两个函数,你只想从另一个调用一个函数。具体来说,您希望从“私有”方法调用“公共”方法(我将这些术语放在引号中,因为JavaScript不支持可见性,这些是解决方法以实现相同的目的)。

只需保留对当前实例的引用:

function Parent(){
    var self = this;
    this.alertParent = function() {
        alert("Parent alert");
    }

    function child() {
        self.alertParent();
    }
}

child关闭其定义的上下文中的所有变量,因此它可以访问selfthis of course changes [MDN]

您也可以使用.call() [MDN].apply() [MDN]将实例明确地传递给child,而不是创建闭包。

所以你的函数定义保持

function child() {
    this.alertParent();
}

当你拨打这个功能时,你可以打电话给它,例如使用child.call(this),如果您知道this引用了您的实例(而不是this,那么它可以是任何其他变量。)

答案 1 :(得分:3)

您的代码有语法错误。也许你的意思是:

function Parent(){
    this.alertParent = function () {
        alert("Parent alert");
    };

    this.child = function () {
      this.alertParent();
    }
}