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