2011-06-20 4 views
0

このコードをMyModule.COLORS.REDの代わりにMyModule.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 

EDIT

(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は通常、私が考えているドットが付いてくる。あなたが同じ人を指しているかどうかはわかりません。あなたがこのフォーラムでexisingメンバーを指しているなら、私はそう疑う。 –

答えて

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では、そのシーケンスの残りのコードは実行されません。 1つのエラーで大量のエラーが発生する可能性があるため、疑問がある場合はリストの1番目のエラーから開始してください。 – InfinitiesLoop

0

ただ直接のものを添付してください。

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