说明中的问题
function Parent(){
this.alertParent(){
alert("Parent alert");
}
function child(){
// how can I call to this.alertParent() from here without passing any
// parameters?
}
}
答案 0 :(得分:8)
你问题的标题令人困惑。非正式术语“父”函数用于调用函数。
在你的情况下,你在构造函数中有两个函数,你只想从另一个调用一个函数。具体来说,您希望从“私有”方法调用“公共”方法(我将这些术语放在引号中,因为JavaScript不支持可见性,这些是解决方法以实现相同的目的)。
只需保留对当前实例的引用:
function Parent(){
var self = this;
this.alertParent = function() {
alert("Parent alert");
}
function child() {
self.alertParent();
}
}
child
关闭其定义的上下文中的所有变量,因此它可以访问self
。 this
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();
}
}