1

私は次のような関数を持っています:

var func1 = function () {
       var apple;
       //Some other code
};

そして、関数を他の関数のパラメーターとして渡しました

control(func);

ここで、制御関数で変数 apple にアクセスしたいと思います。func1.apple動作しません。誰もこれがどのように実行できるか考えていますか?

4

2 に答える 2

2

関数を変更せずにそのような構文を使用することは実際には不可能です。func1.appleは実行されず、すでに実行されているappleようなものです。何かを返したいだけの場合は、次を使用して行います。func1().appleapplereturn

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
});

* プロパティは別の方法ですが、それらはコールバックとしてカウントされ、悪です:)

于 2013-03-12T16:36:15.517 に答える
0

あなたが探しているのはコンストラクターパターンだと思います

var func1 = function () {
       this.apple = "My Apple";
};

var myFuncInstance = new func1();

myFuncInstance.apple; // "My Apple"
于 2013-03-12T16:50:16.267 に答える