2011-06-20 33 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