我试图弄清楚如何处理这种情况,你在同一名称空间下有几个对象,其中所有这些对象的方法可以互换使用 - 即第一个对象可能正在使用第二个对象的方法第一个来自第一个。两者都可能使用其他对象等。最好用一个例子来表示它:
var MySystem = MySystem || {};
MySystem.Form = function() {};
MySystem.Form.prototype = {
objErrorHandler : null,
objHelper : null,
objValidation : null,
idClickSubmit : '.submitClick',
getAttributes : function(thisForm) {
"use strict";
if (this.objValidation.isEmpty(thisForm)) {
return {};
}
},
submit : function() {
"use strict";
var self = this;
$(document).on(
'click',
self.idClickSubmit,
self.objErrorHandler.tryCatch(function(event) {
self.objHelper.preventDefaultPropagation(event);
var thisTarget = $(this).data('target');
$('form[data-identity="' + thisTarget + '"]').submit();
})
);
},
dynamicRow : function() {
"use strict";
var objFormDynamicRow = new MySystem.FormDynamicRow();
objFormDynamicRow.init();
},
init : function() {
"use strict";
var self = this;
self.objErrorHandler = new CMDSystem.ErrorHandler();
self.objHelper = new CMDSystem.Helper();
self.objValidation = new CMDSystem.Validation();
self.objErrorHandler.tryCatch(function() {
self.submit();
self.dynamicRow();
})(self);
}
};
现在 - 要实例化我将使用的对象:
var objForm = new MySystem.Form();
objForm.init();
问题是Validation对象可能会使用Form对象的getAttributes()方法,我会在Validation.init()方法中或在调用它的方法中实例化它。
现在,这里的问题是 - 我是否可以更好地在需要它的每个方法(作为私有对象)中实例化所有其他对象(ErrorHandler,Helper和Validation),或者上述方法是否正确以及有什么好处/缺点?使用任何一种方法。