gpt4 book ai didi

javascript - 如何在 JavaScript 中优雅地将函数分配给多个对象属性

转载 作者:行者123 更新时间:2023-12-02 17:06:02 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com