2011-06-20 35 views
0

我想知道,如果有可能使此代码更改为一个点,我可以调用MyModule.RED而不是有MyModule.COLORS.RED。我试图让mod的变量来存储颜色,但它似乎无法正常工作。这是我做错了吗?模块Javascript

(function() { 
    var mod; 

// Create the global, and also give ourselves a convenient alias for it (`mod`) 
window.MyModule = mod = {}; 

// Colors 
mod.COLORS = { 
    RED: "#FF0000", 
    BLUE: "#0000FF", 
    // ... 
    GREEN: "#00FF00" 
}; 

mod.testQuery = MyModule_testQuery; 
function MyModule_testQuery() { 
    // Do something 
} 

})(); 

alert(MyModule.COLORS.RED); // #FF0000 
MyModule.testQuery();  // Do something 

编辑

(function() { 
    var mod; 

// Create the global, and also give ourselves a convenient alias for it (`mod`) 
window.MyModule = mod = {}; 

// Colors 
mod.COLORS = { 
    RED: "#FF0000", 
    BLUE: "#0000FF", 
    // ... 
    GREEN: "#00FF00" 
}; 

var colors = mod.COLORS; 

mod.testQuery = MyModule_testQuery; 
function MyModule_testQuery() { 
// Do something 
} 

})(); 

alert(colors.RED); // #FF0000 
MyModule.testQuery();  // Do something 
+0

你是否像简化没有点? –

+0

@Juan Mendes通常带着我想的点。不确定你是否指的是同一个人。如果你指的是这个论坛上的一个正在兴起的成员,那么我很怀疑。 –

回答

2
// Create the global, and also give ourselves a convenient alias for it (`mod`) 
var mod; 
window.MyModule = mod = { 
    RED: "#FF0000", 
    BLUE: "#0000FF", 
    // ... 
    GREEN: "#00FF00" 
}; 

,或者如果你想腾出打字时间:

var cols = mod.COLORS; 
cols.RED; 
+0

感谢您的回复。我试着改变你在下面提供的答案,并在上面添加它,但它似乎不适用于我。你能帮我看看我是否错过了任何东西吗? –

+0

发行,因为颜色在本地范围内? –

+0

我试着把它变成全局范围,但它返回undefined。 –

0

当你说 “不行”,你就可以更具体? :)

我认为你正在寻找这样的:

(function() { 

// Create the global, and also give ourselves a convenient alias for it (`mod`) 
window.MyModule = { 
    RED: "#FF0000", 
    BLUE: "#0000FF", 
    GREEN: "#00FF00", 
    testQuery: MyModule_testQuery 
}; 

function MyModule_testQuery() { 
    // Do something 
} 

})(); 

alert(MyModule.RED); // #FF0000 
MyModule.testQuery();  // Do something 
+0

@InfinitiesLoop谢谢你的回复,我试着运行你的代码,假设有一个警告我想,但它似乎没有返回任何东西。我错过了什么? –

+0

哦,对不起,错字。 testQuery之后的“=”应该是“:”。修复.. – InfinitiesLoop

+0

顺便说一句,你应该总是在测试时看错误控制台。例如,您会在这种情况下看到错误。在JS发生错误时,该序列中的其余代码将不会运行。一个错误最终会导致大量的额外错误,所以如果有疑问,从列表中的第一个错误开始。 – InfinitiesLoop

0

就直接装上的东西。

(function() { 
    window.MyModule = { 
     RED: "#FF0000" 
    , BLUE: "#0000FF" 
    , GREEN: "#00FF00" 
    , testQuery = function() { 
     // Do something 
     } 
    }; 
})(); 
alert(MyModule.RED); // #FF0000 
MyModule.testQuery(); // Do something