Mootools Class - вызов функции внутри функции - PullRequest
0 голосов
/ 08 февраля 2012

В настоящее время я изучаю классы Mootools, и есть кое-что, что я не могу придумать или найти достойный пример.

По сути, мне нужно иметь возможность вызывать функцию внутри другой функции того же класса; пример ниже:

var Bob = new Class({

    initialize: function () {
        this.message = 'Hello';
    },

    someOther: function() {
        this.message2 = 'Bob';
    },

    getMessage: function() {
        return this.someOther();
    },

});

window.addEvent('domready', function() {    
    var map = new Bob;

    alert(map.getMessage());
});

Из этого кода я бы подумал, что предупреждение выдаст «Bob», который был установлен в функции «someOther», но выводит неопределенное сообщение.

Может кто-нибудь помочь или указать, где я ошибаюсь?

Заранее спасибо,

1 Ответ

4 голосов
/ 08 февраля 2012

не совсем.

someOther не имеет возвращаемого значения само по себе, это установщик.Вы вызываете его, и он устанавливает this.message2 в класс, но ничего не возвращает.методы должны return this (экземпляр, делающий его цепным) или значение, когда получатель.

в любом случае, вы можете сделать так, чтобы оно устанавливало свойство и возвращало его так:

var Bob = new Class({
    initialize: function() {
        this.message = 'Hello';
    },
    someOther: function() {
        return this.message2 = 'Bob'; //bad 
    },
    getMessage: function() {
        return this.someOther(); // why
    },
});
window.addEvent('domready', function() {
    var map = new Bob;
    alert(map.getMessage());
    alert(map.message2); // bob
});

, хотя семантически вы хотите иметь 1 геттер..getMessage должен просто return this.message - вы можете написать другой метод, который вызывает someOther и возвращает его.

посмотрите на этот шаблон для метода получения / установки в контексте класса, который я написал на днях: http://fragged.org/using-overloadsetter-overloadgetter-to-make-flexible-functions-in-mootools_1451.html

и т. Д. И т. Д., Чтобы получить дополнительную помощь, посмотрите блоги по кетологии или davidwalsh.name - или mootorial - множество примеров использования и структуры класса.

большинство ключевых перечислены здесь: https://stackoverflow.com/tags/mootools/info

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