2
JSでモジュールパターンを使用しようとしています。しかし、HM.init()
をコンソールに呼び出すと、undefined
と表示されます。 this.carousel
がまったく存在しないようです。何故ですか?モジュールをjavascriptのモジュールパターンで拡張する
JS:
(function(window, $){
var HM = (function (HM) {
HM.init = function(){
this.carousel.init();
}
return HM;
})(HM || {});
window.HM = HM;
$(function(){
console.log(HM.init()); // this doesn't work
});
})(window, jQuery);
//Extending module (this is supposed to be in another file)
(function(window, HM, $){
HM.carousel = {
init: function(){
return 'initialise HM';
}
}
})(window, HM, jQuery);.
感謝
あなたのお返事ありがとうございました。私はコードを更新しましたが、それはまだ動作しません。コードをチェックしてください。 – Shaoz
右問題は 'HM.init'が何も返さないということです。 'HM.init'の中で' return this.carousel.init() 'がうまくいくはずです。 'console.log'と置き換えることで、' return 'initialise HM'を例えば ' 'console.log( 'initialise HM')'(デバッグ出力だけと仮定し、実際にはそれを返す必要はありません)。混乱して申し訳ありません:P – FireFly
もう一度おねがいしますが、このプロジェクトではこのコードは他のすべてのモジュールが初期化されるコアとなるため、各モジュールごとにリターンを行うのはちょっと面倒です。たとえば、カルーセルモジュールもタブ、アコーディオンなどのように作成されます...私は当然のことながら、それぞれのリターンは変です。 – Shaoz