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(),
}

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 回答
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 回答