Расширение модулей в шаблоне модуля в JavaScript - PullRequest
2 голосов
/ 20 марта 2012

Я пытаюсь использовать шаблон модуля с JS.Но когда я вызываю HM.init() в консоли, он говорит undefined.Как будто this.carousel вообще не существует.Почему это так?

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);.

Большое спасибо

1 Ответ

4 голосов
/ 20 марта 2012

Причина, по которой он печатает undefined, заключается в том, что HM.init ничего не возвращает (оператор return отсутствует, поэтому по умолчанию возвращается undefined).

Либо вы хотите добавить return до вызова this.carousel.init(), например:

...
HM.init = function(){
    return this.carousel.init();
}
...

... или вы хотите использовать console.log вместо этого внутри вашей функции HM.carousel.init, если вы хотите напечатать 'initialize HM' на консоли:

...
HM.carousel = {
    init: function(){
        return 'initialise HM';
    }
}
...

(само по себе возвращаемое значение не является хорошим средством отладки, поэтому, вероятно, имеет смысл распечатать его с помощью console.log.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...