私はJavaScriptフレームワークを作成していますが、以下のコードは何らかの理由で動作しません。理由は何ですか?functionで関数を引数として渡すときにプライベート関数を呼び出しますか?
function jCamp(code){
function test(){
alert();
}
code();
}
jCamp(function(){
test();
});
私はJavaScriptフレームワークを作成していますが、以下のコードは何らかの理由で動作しません。理由は何ですか?functionで関数を引数として渡すときにプライベート関数を呼び出しますか?
function jCamp(code){
function test(){
alert();
}
code();
}
jCamp(function(){
test();
});
あなたは、通話やAPPYとスコープを変更することができます。
function jCamp(code){
function test(){
alert();
}
code.call(test);
}
jCamp(function(){
this();
});
だから、私はこのようにそれを行うだろう
テスト()JCAMP()が定義されていない(あなたのコードを変更しない場合には、ライン8上の一つだ)への引数である匿名関数の内部で呼び出されを。関数test()は、jCamp()の定義内でのみ定義されています。
それでは、関数がjCamp()の引数関数を介してのみ呼び出すことができるようにするにはどうすればいいですか? –
function jCamp(code){
this.test = function(){
alert("test");
}
code();
}
jCamp(function(){
this.test();
});
プライベート関数を参照するようにthis
を変更します。
test
は、jCamp
内でのみ使用できるプライベート関数です。引数として渡された無名関数からは呼び出すことはできません。あなたはこのように、しかしそれ財産行うことができます:それはは、それが呼び出されないを、作成したときに
function jCamp(code){
this.test = function(){
alert();
}
code();
}
jCamp(function(){
this.test();
});
'this'が' window'なので、実際に 'test'がグローバルに格納されることに注意してください。 – delnan
機能の範囲が決定されます。
それはそうしました。 THX! –