Как я могу применить DRY к этому объекту JavaScript? - PullRequest
2 голосов
/ 11 октября 2011

У меня есть объект JavaScript, подобный этому, который отвечает за управление сообщениями:

var _message = {
            removeMessages: function () {
                messageContainer.removeClass(errorClass)
                .removeClass(infoClass)
                .removeClass(successClass)
                .text('');
            },
            info: function (text) {
                this.removeMessages();
                messageContainer.addClass(infoClass).text(text);
            },
            error: function (text) {
                this.removeMessages();
                messageContainer.addClass(errorClass).text(text);
            },
            success: function (text) {
                this.removeMessages();
                messageContainer.addClass(successClass).text(text);
            }
        };

Три раза был вызван jQuery removeClass.Три раза this.removeMessages(); был вызван.Три раза я использовал messageContainer.text(text); для отображения текста.

Примечание: messageContainer - это объект jQuery, и я бы использовал этот объект как _message.info('some information');.

1 Ответ

3 голосов
/ 11 октября 2011

Вы можете удалить несколько классов одновременно с помощью removeClass:

.removeClass( [className] )
classNameOne илибольше разделенных пробелами классов, которые будут удалены из атрибута класса каждого соответствующего элемента.

Таким образом, вы можете сделать это:

removeMessages: function () {
    messageContainer
        .removeClass(errorClass + ' ' + infoClass + ' ' + successClass)
        .text('');
}

Вы можете также очистить остальные три с помощьюмаленький помощник:

_helper: function(text, cls) {
    this.removeMessages();
    messageContainer.addClass(cls).text(text);
},
info: function (text) {
    this._helper(text, infoClass);
},
error: function (text) {
    this._helper(text, errorClass);
},
success: function (text) {
    this._helper(text, successClass);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...