JavaScript 专业人士您好!
我正在努力提高我的 JavaScript 知识,并想问您以下代码片段最优雅的重写是什么,该代码片段动态地将函数分配给多个对象属性。
我正在使用 jQuery,但我也很欣赏非 jQuery 解决方案。欢迎简短易读的解决方案!谢谢!
$.fn.feedback.events = function () {
var events = ['reset', 'success', 'error', 'warning'],
r = {};
$.each(events, function (_, ev) {
r[ev] = function (evt, msg) {
$.fn.feedback.displayFeedback(evt.delegateTarget, evt.type, msg);
};
});
return r;
}();
通过上面的代码片段,我想替换以下结构,这可能是最可读的解决方案,但是嘿,我们是程序员而不是作家。 :)
$.fn.feedback.events = {
reset: function (evt, msg) {
$.fn.feedback.displayFeedback(evt.delegateTarget, evt.type, msg);
},
success: function (evt, msg) {
$.fn.feedback.displayFeedback(evt.delegateTarget, evt.type, msg);
},
error: function (evt, msg) {
$.fn.feedback.displayFeedback(evt.delegateTarget, evt.type, msg);
},
warning: function (evt, msg) {
$.fn.feedback.displayFeedback(evt.delegateTarget, evt.type, msg);
}
}
最佳答案
它们都是相同的函数,因此无需为每个函数创建一个新函数:
(function () {
var events = ['reset', 'success', 'error', 'warning'];
$.fn.feedback.events = {};
$.each(events, function (_, ev) {
$.fn.feedback.events[ev] = display;
});
function display (evt, msg) {
$.fn.feedback.displayFeedback(evt.delegateTarget, evt.type, msg);
}
}());
关于javascript - 如何在 JavaScript 中优雅地将函数分配给多个对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25234811/