0

方法 1:

通常の作業コード

var foo1 = function() {
    var t1 = new Date();
    console.log("initialise - one time only "+this);
    foo1 = function() {
        console.log("Executes everytime after initialising(initialise should not execute again) "+this);
        return t1;
    };
    return foo1();
};

実行中: foo1();

出力:

初めて

初期化 - 1 回のみ [オブジェクト ウィンドウ]

初期化後に毎回実行する(初期化は再実行しない) [オブジェクトウィンドウ]

隔週

初期化後に毎回実行する(初期化は再実行しない) [オブジェクトウィンドウ]

方法 2

私はjavascriptのモジュールで同じことをしようとしています

var tt=(function(){
     var foo = function() {
        var that=this;
        var t = new Date();
        console.log("initialise - one time only" + this);
        foo = function() {
            console.log("Executes everytime after initialising(initialise should not execute again) "+this);
            return t;
        };
        return foo();
    }
    return {
        foo:foo
    };
})();

実行: tt.foo();

出力:

初めて

初期化 - 1 回のみ [オブジェクト オブジェクト]

初期化後に毎回実行する(初期化は再実行しない) [オブジェクトウィンドウ]

隔週

初期化 - 1 回のみ [オブジェクト オブジェクト]

初期化後に毎回実行する(初期化は再実行しない) [オブジェクトウィンドウ]

方法 2 で foo1 が再度初期化されるのはなぜですか?

方法 2 のモジュール パターン内でこの変更の範囲がウィンドウに変更されるのはなぜですか?

方法 2 を方法 1 のように機能させる方法は?

方法 2 の何が問題なのか、概念的な説明をお願いします。前もって感謝します。

4

1 に答える 1