揭示模块模式问题

时间:2013-04-15 17:01:23

标签: javascript design-patterns

这是我的代码:

var APP = {}

APP.item = function() {
    var two = function() { return "three"; }
    return {
        two: two
    };
}

console.log(APP.item.two);

现在,从我读过的内容来看,输出不应该是“三”吗?相反,结果是未定义的。

小提琴:http://jsfiddle.net/mhxpz/1/

2 个答案:

答案 0 :(得分:4)

itemtwo都是需要调用的函数:

console.log(APP.item().two());

...

EXTRA EXPLANATORY注意:在原始代码中,item位只返回函数,而不是您希望函数返回的对象。因此,当您要求item.two时,它找不到two属性(因为它是返回对象的一部分,而不是item函数本身的一部分)。希望能为你理解这一点。

答案 1 :(得分:2)

结果是未定义的,因为您没有调用APP.item函数(从而获得return值。此外,您需要调用two函数来获取其返回值:< / p>

console.log( APP.item().two() );  // outputs "three"