私は次のような関数を持っています:
var func1 = function () {
var apple;
//Some other code
};
そして、関数を他の関数のパラメーターとして渡しました
control(func);
ここで、制御関数で変数 apple にアクセスしたいと思います。func1.apple
動作しません。誰もこれがどのように実行できるか考えていますか?
私は次のような関数を持っています:
var func1 = function () {
var apple;
//Some other code
};
そして、関数を他の関数のパラメーターとして渡しました
control(func);
ここで、制御関数で変数 apple にアクセスしたいと思います。func1.apple
動作しません。誰もこれがどのように実行できるか考えていますか?
関数を変更せずにそのような構文を使用することは実際には不可能です。func1.apple
は実行されず、すでに実行されているapple
ようなものです。何かを返したいだけの場合は、次を使用して行います。func1().apple
apple
return
var func1 = function() {
var apple;
…
return apple;
};
var apple = func1();
または、返す値が複数ある場合は、オブジェクトを返します。
var func1 = function() {
var apple;
…
return {apple: apple};
};
var apple = func1().apple;
関数の実行中に値が必要な場合、これを達成する唯一の*方法は、コールバック内で別のコールバックを使用することです。
var func1 = function(useApple) {
var apple;
…
useApple(apple);
…
};
func1(function(apple) {
// Do something with apple
});
* プロパティは別の方法ですが、それらはコールバックとしてカウントされ、悪です:)
あなたが探しているのはコンストラクターパターンだと思います
var func1 = function () {
this.apple = "My Apple";
};
var myFuncInstance = new func1();
myFuncInstance.apple; // "My Apple"