Использование Class.Create в прототипе ... невозможно получить доступ к внутренним функциям - PullRequest
0 голосов
/ 15 ноября 2011

Я пытаюсь использовать пространства имен, чтобы лучше организовать свои сайты очень сложным кодом.У меня есть:

var myApp = {};

myApp.fp = {
    brandCarousel: null,

    init: function() {
        // initialize brand carousel
        this.brandCarousel = new Pluit.Carousel('brand-scroll-outer', {  circular: false  });
    }
};

document.observe("dom:loaded", function() { myApp.fp.init();  });

Я использую прототип 1.7 и библиотеку Pluit Carousel.

Если я пытаюсь вызвать один из методов Pluit Carousels (moveNext), набрав:

myApp.fp.brandCarousel.moveNext()

Я получаю ошибку JavaScript:

TypeError: У объекта # нет метода 'moveNext'

Есть ли что-то, что я ошибаюсь, когда дело касается областиили пространство имен?Как я могу получить доступ к этой внутренней функции?

1 Ответ

0 голосов
/ 15 ноября 2011

Ничто в вашем конкретном примере не выглядит особенно неправильно (за исключением того, что оно переключается между myApp и masApp (опечатка?)).Вот урезанный, фиктивный пример, показывающий, что ваш подход работает (и ваша проблема должна быть в другом месте):

var myApp = {};

myApp.fp = {
    brandCarousel: null,

    init: function() {
        // initialize brand carousel
        this.brandCarousel = new (function() {
            this.moveNext = function() {
                alert("moving!");
            };
        })  
    }
};

myApp.fp.init()
myApp.fp.brandCarousel.moveNext()

Приведенный выше код предупреждает moving!, как и ожидалось.

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