Функция () существует, но функция-прототип () не существует.Зачем? - PullRequest
1 голос
/ 03 июля 2011

Я создаю класс JavaScript с именем ImageRotatorManager для управления динамически загружаемым слайд-шоу. При загрузке изображений через XML я определил следующие функции:

/* Loads configuration settings for the image rotator */
ImageRotatorManager.prototype.loadXML = function (callback) {
    jQuery.get("assets/image-rotator.xml", {}, function (xml) {
            parseXML(xml, callback); //the callback function                                             
    });
};

/* Loads configuration settings for the image rotator */
function parseXML(xml, callback) {
    //find every image and add the image to the '#slideshow' div
};

функция parseXML(xml, callback) вызывается успешно.

Однако, если я определю parseXML () как ImageRotatorManager.prototype.parseXML = function (xml, callback) и вызову эту функцию, используя ImageRotatorManager.parseXML(xml, callback);, я получу следующую ошибку:

ImageRotatorManager.parseXML не является функцией

Почему я получаю эту ошибку? Я делаю другие вызовы функций, используя эту подпись, и они отлично работают.

Ответы [ 2 ]

1 голос
/ 03 июля 2011

Можете ли вы присвоить parseXML() непосредственно ImageRotatorManager?

ImageRotatorManager.parseXML = function(xml, callback) { ... };

и вызвать его так, как если бы вы использовали статический метод в Java?

ImageRotatorManager.parseXML(xml, callback);
1 голос
/ 03 июля 2011

Вы не можете вызвать .parseXML() таким образом.

Вы добавили его в прототип , поэтому вы должны вызвать его на экземпляре класс, не используя само имя класса.

Попробуйте это:

ImageRotatorManager.prototype.loadXML = function (callback) {
    var self = this;
    jQuery.get("assets/image-rotator.xml", {}, function (xml) {
        self.parseXML(xml, callback); //the callback function
    });
};
...