3

描述里面的问题

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

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

2 回答 2

12

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

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

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

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

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

child关闭它定义的上下文中的所有变量,因此它可以访问self. this当然会改变[MDN]

除了创建闭包,您还可以使用[MDN][MDN]将实例显式传递给。child.call() .apply()

所以你的函数定义保持不变

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

当你调用函数时,你调用它,例如,child.call(this)如果你知道它this指的是你的实例(而不是this它可以是任何其他变量)。

于 2012-06-09T10:35:23.997 回答
3

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

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

    this.child = function () {
      this.alertParent();
    }
}
于 2012-06-09T10:22:22.570 回答