1

すべての関数を 1 つの場所にきちんとカプセル化し、そこのプロパティ名で呼び出すことができるように何かを書こうとしていますが、1 つのプロパティを呼び出すたびにすべてが返されます。

main('test').f3; 'f3test' のみをログに記録し、コンセプトを維持するにはどうすればよいですか。

var main = function (t) {

    var f1 = function () { console.log('f1' + ' ' + t); };
    var f2 = function () { console.log('f2' + ' ' + t); };
    var f3 = function () { console.log('f3' + ' ' + t); };
    var f4 = function () { console.log('f4' + ' ' + t); };
    var f5 = function () { console.log('f5' + ' ' + t); };
    var f6 = function () { console.log('f6' + ' ' + t); };
    var f7 = function () { console.log('f7' + ' ' + t); };
    var f8 = function () { console.log('f8' + ' ' + t); };


    return {
        f1: f1(),
        f2: f2(),
        f3: f3(),
        f4: f4(),
        f5: f5(),
        f6: f6(),
        f7: f7(),
        f8: f8(),
    }


}




//this
    main('test').f3; 
//will console.log
//f1test
//f2test
//f3test
//f4test
//f5test
//f6test
//f7test
//f8test
4

3 に答える 3

4

コードを少し変更します。

return {
    f1: f1,
    f2: f2,
    f3: f3,
    f4: f4,
    f5: f5,
    f6: f6,
    f7: f7,
    f8: f8 // <-- don't put last comma here
}

()関数をすぐに実行するため、参照を提供する必要があります。次に、次のように呼び出します。

main('test').f3(); // f3 test
于 2013-04-10T08:14:36.433 に答える
1

次のような関数結果の代わりに関数変数を返す必要があります。

return {
        f1: f1,
        f2: f2,
        f3: f3,
        f4: f4,
        f5: f5,
        f6: f6,
        f7: f7,
        f8: f8,
}

そして、それを次のように呼び出します

main('test').f3();
于 2013-04-10T08:16:13.483 に答える
1

変化する

return {
    f1: f1(),
    f2: f2(),
    f3: f3(),
    f4: f4(),
    f5: f5(),
    f6: f6(),
    f7: f7(),
    f8: f8(),
}

return {
    f1: f1,
    f2: f2,
    f3: f3,
    f4: f4,
    f5: f5,
    f6: f6,
    f7: f7,
    f8: f8,
}

main('test').f3;

main('test').f3();
于 2013-04-10T08:15:20.887 に答える