另一个Object方法中的JavaScript Object实例化

时间:2014-06-16 17:39:42

标签: javascript prototype javascript-objects

我试图弄清楚如何处理这种情况,你在同一名称空间下有几个对象,其中所有这些对象的方法可以互换使用 - 即第一个对象可能正在使用第二个对象的方法第一个来自第一个。两者都可能使用其他对象等。最好用一个例子来表示它:

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),或者上述方法是否正确以及有什么好处/缺点?使用任何一种方法。

0 个答案:

没有答案