説明内の質問
function Parent(){
this.alertParent(){
alert("Parent alert");
}
function child(){
// how can I call to this.alertParent() from here without passing any
// parameters?
}
}
説明内の質問
function Parent(){
this.alertParent(){
alert("Parent alert");
}
function child(){
// how can I call to this.alertParent() from here without passing any
// parameters?
}
}
あなたの質問のタイトルは紛らわしいです。非公式な用語「親」関数は、むしろ呼び出し関数に使用されます。
あなたの場合、コンストラクター関数内に 2 つの関数があり、一方を他方から呼び出したいだけです。具体的には、「プライベート」メソッドから「パブリック」メソッドを呼び出す必要があります (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
、他の変数にすることができます)。
コードに構文エラーがあります。多分あなたはこれを意味します:
function Parent(){
this.alertParent = function () {
alert("Parent alert");
};
this.child = function () {
this.alertParent();
}
}