function返回所有属性,但只能返回被调用的属性

时间:2013-04-10 08:12:15

标签: javascript

我正在尝试编写一些东西,以便我可以将所有函数封装到一个好的和整齐的地方并通过那里的属性名称来调用它们,但是发生的事情是每当我调用一个属性时它返回所有。

如何让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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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();

答案 2 :(得分:1)

您需要返回函数变量而不是函数结果,如:

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

并称之为

main('test').f3();