javascript - 如何将 DRY 应用于此 JavaScript 对象?

标签 javascript jquery dry javascript-objects

我有一个像这样的 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');

最佳答案

您可以使用 removeClass 一次删除多个类:

.removeClass( [className] )
classNameOne or more space-separated classes to be removed from the class attribute of each matched element.

所以你可以这样做:

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

您还可以使用小 helper 清理其他三个:

_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);
}

关于javascript - 如何将 DRY 应用于此 JavaScript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7722380/

相关文章:

javascript - 如何使用 JavaScript 显示/隐藏隐藏的 HTML 表格行(无 jQuery)

javascript - jQuery - 完成多个 ajax 请求

javascript - 在同一个 iframe 上打开 HTTPS 网站

javascript - 如何处理 Highcharts 中图例中的鼠标悬停事件?

java - 同一 Java 类的两个版本,每个版本都有不同的父类(super class)

ruby-on-rails - 社交图标的 DRY 代码

javascript - HTML block 放置的逻辑

javascript - 没有 Javascript 的人的后备会在 jQuery 加载之前闪现

jQuery 检查并获取子元素的属性

java - 如何避免重复的 JUnit 测试