我有这三个函数,它们是不同的,但它们都发生在相同的上下文中,它们是相关的,所以它们在公共部分中有一些组件(例如:类名)。
function btnSubmitLoading($btn, cleanError, classToRemove) {
// 5-10 lines of code
}
function btnSubmitComplete($btn, classToAdd) {
// other 5-10 lines of code
}
function btnFeedback($btn, $msg, classToAdd) {
// more 5-10 lines of code
}
它们在$(document).ready()之前声明,因此它们是全局的,并在不同的页面中调用。当我需要其中一个的时候:
btnFeedback($('button'), 'success', 'fa-check');
我这里的问题是,是否有任何理由将这些函数转换为表达式函数,导致如下所示:
var ButtonSubmit = function() {
this.btnSubmitLoading = function($btn, cleanError, classToRemove) {
// 5-10 lines of code
}
this.btnSubmitComplete = function($btn, classToAdd) {
// other 5-10 lines of code
}
this.btnFeedback = function($btn, $msg) {
// more 5-10 lines of code
}
}
就叫它:
btnFancy = new ButtonSubmit();
当我需要它的时候:
btnFancy.btnFeedback($('button'), 'success', 'fa-check');
我一直在学习表达式/声明函数和闭包/原型,但我仍然不知道应该在哪里应用它们。
谢谢。
发布于 2016-08-08 21:29:59
因为您的ButtonSubmit
类/构造函数实际上并不做任何事情,所以这是没有意义的。至少你应该使用它来简化你对对象的使用,如下所示:
let btnFancy = new ButtonSubmit($('button'));
btnFancy.feedback('success', 'fa-check');
(我不知道这对您的用例是否有意义。)
你可以像这样实现它:
function ButtonSubmit(button) {
this.button = button;
}
ButtonSubmit.prototype.submitLoading = function (cleanError, classToRemove) {
this.button....
// 5-10 lines of code
}
ButtonSubmit.prototype.submitComplete = function (classToAdd) {
this.button....
// 5-10 lines of code
}
ButtonSubmit.prototype.feedback = function ($msg) {
this.button....
// 5-10 lines of code
}
如果这对您来说没有多大意义,并且您只想将函数命名为空间,则不需要函数或new
let btn = {
submitLoading: function ($btn, cleanError, classToRemove) {
// 5-10 lines of code
}
submitComplete: function ($btn, classToAdd) {
// other 5-10 lines of code
},
feedback: function ($btn, $msg, classToAdd) {
// more 5-10 lines of code
}
}
btn.feedback($('button'), ...);
https://stackoverflow.com/questions/38828417
复制相似问题